输出数组和对象的结构化视图

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;