HOWTO · PHP
如何在 PHP 中回顯或列印陣列
本文介紹如何在 PHP 中回顯或列印陣列。它包括 foreach 迴圈,print_r()函式和 var_dump()函式。
本頁內容
陣列無法直接傳給 echo,並以易讀的值清單顯示。在 PHP 中,若要自行格式化每個值,請使用 foreach;若要查看包含索引鍵的易讀表示,請使用 print_r();若需要值的型別等診斷資訊,請使用 var_dump()。以下範例使用相同的花朵清單,方便比較輸出。
在 PHP 中使用 foreach 迴圈回顯或列印陣列
foreach 迴圈會逐次將陣列中的每個值指定給迴圈變數。你可以在迴圈本體中使用該變數,將值傳給 echo、加入標籤,或套用其他格式。foreach 會處理陣列走訪,不需要自行推進陣列指標。
請執行以下範例:
本節中的程式碼以及顯示的標籤或輸出仍為英文。
<?php
$flowers = ["Rose", "Lili", "Jasmine", "Hibiscus", "Tulip", "Sun Flower", "Daffodil", "Daisy"];
echo "The array is:\n";
foreach ($flowers as $flower) {
echo $flower . "\n";
}
?>
The array is:
Rose
Lili
Jasmine
Hibiscus
Tulip
Sun Flower
Daffodil
Daisy
這會依照走訪順序,只輸出各個值。如果也需要每個索引鍵,請使用 foreach 的 key => value 形式;目前的範例使用數值索引陣列,因此輸出的值不會帶有索引標籤。
在 PHP 中使用 print_r() 函式回顯或列印陣列
print_r() 會產生易讀的陣列表示,其中包含每個索引鍵及其對應的值。若想檢視陣列的整體內容,而不必撰寫迴圈或逐項格式化,這個函式就很實用。第二個引數通常稱為回傳參數,是選填的,預設值為 false:函式會輸出該表示內容。若傳入 true,函式則會改為以字串回傳該內容,供你儲存或與其他文字組合。
本節中的程式碼以及顯示的標籤或輸出仍為英文。
<?php
$flowers = ["Rose", "Lili", "Jasmine", "Hibiscus", "Tulip", "Sun Flower", "Daffodil", "Daisy"];
print_r($flowers);
?>
Array
(
[0] => Rose
[1] => Lili
[2] => Jasmine
[3] => Hibiscus
[4] => Tulip
[5] => Sun Flower
[6] => Daffodil
[7] => Daisy
)
例如,$representation = print_r($flowers, true); 會取得格式化後的文字,而不是立即輸出。若需要精簡且易讀的檢視結果,可採用這種方式;它不會標示每個值的 PHP 型別。
在 PHP 中使用 var_dump() 函式回顯或列印陣列
var_dump() 是供除錯使用的函式。它會輸出診斷表示,指出陣列大小、索引鍵、值的型別及字串長度。與 print_r() 不同,它不會以一般用途可用的字串形式回傳該表示;它的回傳值並非格式化後的診斷文字。因此,這個函式適合檢查 PHP 目前持有的值,但較不適合用來產生面向使用者的輸出。
本節中的程式碼以及顯示的標籤或輸出仍為英文。
<?php
$flowers = ["Rose", "Lili", "Jasmine", "Hibiscus", "Tulip", "Sun Flower", "Daffodil", "Daisy"];
var_dump($flowers);
?>
array(8) {
[0]=>
string(4) "Rose"
[1]=>
string(4) "Lili"
[2]=>
string(7) "Jasmine"
[3]=>
string(8) "Hibiscus"
[4]=>
string(5) "Tulip"
[5]=>
string(10) "Sun Flower"
[6]=>
string(8) "Daffodil"
[7]=>
string(5) "Daisy"
}
需要控制值的顯示方式時,請使用 foreach;需要易讀的索引鍵和值摘要時,請使用 print_r();除錯時若要檢查型別與長度,則可使用 var_dump()。這些範例展示的是扁平字串值;對於巢狀陣列,這兩個檢視函式也會呈現巢狀內容,而使用 foreach 自訂格式時,則需要自行決定如何走訪巢狀結構。