輸出陣列和物件的結構化檢視
print_r()
- 輸出陣列和物件以進行除錯
print_r
將輸出人類可讀的陣列或物件格式。
你可能有一個陣列或物件的變數。試圖用 echo
輸出它會丟擲錯誤:
Notice: Array to string conversion
。你可以使用 print_r
函式轉儲此變數的可讀格式。
你可以將 true 作為第二個引數傳遞,以將內容作為字串返回。
$myobject = new stdClass();
$myobject->myvalue = 'Hello World';
$myarray = [ "Hello", "World" ];
$mystring = "Hello World";
$myint = 42;
// Using print_r we can view the data the array holds.
print_r($myobject);
print_r($myarray);
print_r($mystring);
print_r($myint);
這輸出如下:
stdClass Object
(
[myvalue] => Hello World
)
Array
(
[0] => Hello
[1] => World
)
Hello World
42
此外,print_r
的輸出可以作為字串捕獲,而不是簡單地回顯。例如,以下程式碼將 $myarray
的格式化版本轉儲為新變數:
$formatted_array = print_r($myarray, true);
請注意,如果你在瀏覽器中檢視 PHP 的輸出,並且它被解釋為 HTML,那麼除非你執行類似的操作,否則不會顯示換行符並且輸出將更不易讀
echo '<pre>' . print_r($myarray, true) . '</pre>';
開啟頁面的原始碼也將以相同的方式格式化你的變數,而無需使用
<pre>
標記。
或者,你可以告訴瀏覽器你輸出的內容是純文字,而不是 HTML:
header('Content-Type: text/plain; charset=utf-8');
print_r($myarray);
var_dump()
- 輸出有關引數內容的人類可讀除錯資訊,包括其型別和值
與 print_r
相比 ,輸出更加詳細,因為它還輸出變數的型別及其值以及其他資訊,如物件 ID,陣列大小,字串長度,參考標記等。
你可以使用 var_dump
輸出更詳細的版本進行除錯。
var_dump($myobject, $myarray, $mystring, $myint);
輸出更詳細:
object(stdClass)#12 (1) {
["myvalue"]=>
string(11) "Hello World"
}
array(2) {
[0]=>
string(5) "Hello"
[1]=>
string(5) "World"
}
string(11) "Hello World"
int(42)
注意 :如果在開發環境中使用 xDebug,則預設情況下 var_dump 的輸出受限制/截斷。有關更改此選項的更多資訊,請參閱官方文件 。
var_export()
- 輸出有效的 PHP
程式碼
var_export()
轉儲專案的 PHP
可解析表示。
你可以將 true 作為第二個引數傳遞,以將內容返回到變數中。
var_export($myarray);
var_export($mystring);
var_export($myint);
輸出是有效的 PHP 程式碼:
array (
0 => 'Hello',
1 => 'World',
)
'Hello World'
42
要將內容放入變數,你可以這樣做:
$array_export = var_export($myarray, true);
$string_export = var_export($mystring, true);
$int_export = var_export($myint, 1); // any `Truthy` value
之後,你可以像這樣輸出:
printf('$myarray = %s; %s', $array_export, PHP_EOL);
printf('$mystring = %s; %s', $string_export, PHP_EOL);
printf('$myint = %s; %s', $int_export, PHP_EOL);
這將產生以下輸出:
$myarray = array (
0 => 'Hello',
1 => 'World',
);
$mystring = 'Hello World';
$myint = 42;