输出数组和对象的结构化视图
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;