PHP 输出数组和对象的结构化视图
示例
print_r()-输出数组和对象以进行调试
print_r将输出人类可读的数组或对象格式。
您可能有一个数组或对象变量。尝试将其输出为echo会引发错误:
Notice:Arraytostringconversion。您可以改用print_r函数来转储此变量的人类可读格式。
您可以将true作为第二个参数传递,以将内容作为字符串返回。
$myobject = new stdClass(); $myobject->myvalue = 'Hello World'; $myarray = [ "Hello", "World" ]; $mystring = "Hello World"; $myint = 42; //使用print_r,我们可以查看数组保存的数据。 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()-输出有关内容的人类可读调试信息,argument(s)包括其类型和值
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); //任何“真实”值
之后,您可以像这样输出:
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;