輸出陣列和物件的結構化檢視

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;