我试图用print_r
将数组的内容写入屏幕。第一个代码段提供正确的输出,但第二个代码段使用字符串串联执行相同的操作,在一行上显示 Array 的内容。这是为什么呢?
我的代码 1:
echo "<pre>";
echo print_r($mixed_array);
echo "</pre>";
结果 1:
Array
(
[0] => 6
[1] => fox
[2] => dog
[3] => Array
(
[0] => x
[1] => y
[2] => z
)
)
1
我的代码 2:
echo "<pre>".print_r($mixed_array)."</pre>";
结果 2:
Printing Array: Array ( [0] => 6 [1] => fox [2] => dog [3] => Array ( [0] => x [1] => y [2] => z ) )
1
您的第一个代码打开<pre>
标签,然后输出$mixed_array
然后执行echo 1
然后关闭<pre>
标签。
第二个代码计算"<pre>".print_r($mixed_array)."</pre>"
这会在echo
之前触发打印$mixed_array
,然后echo <pre>1</pre>
计算结果。
使用print_r($mixed_array)
时,将触发打印。它返回TRUE
,该回显为 1
。如果要使用信息而不是打印信息,则需要调用 print_r($mixed_array, true)
。如果将第二个参数设置为 TRUE
,则两个示例将具有相同的输出:
echo "<pre>";
echo print_r($mixed_array, true);
echo "</pre>";
echo "<pre>" . print_r($mixed_array, true) . "</pre>";
你不应该echo
任何像print_r
这样的在creen上打印内容的函数。代码 1 应如下所示:
echo "<pre>";
print_r($mixed_array);
echo "</pre>";
请注意,"print_r"之前没有"echo"。
查看手册关于print_r
:http://php.net/manual/en/function.print-r.php
从手册:
print_r() 以以下方式显示有关变量的信息 人类可读。
显示,不返回。所以你不应该使用echo
; print_r
是某种echo
.但是你可以以某种方式将echo
与这个函数一起使用,使用第二个参数:
如果要捕获 print_r() 的输出,请使用返回 参数。当此参数设置为 TRUE 时,print_r() 将返回 信息而不是打印它。
所以如果你这样做:
$mixed_array = array("1" => "PHP code tester Sandbox Online",
"foo" => "bar", 5 , 5 => 89009,
"case" => "Random Stuff: " . rand(100,999),
"PHP Version" => phpversion()
);
echo "<pre>".print_r($mixed_array, true)."</pre>";
显示将是这样的:
Array
(
[1] => PHP code tester Sandbox Online
[foo] => bar
[2] => 5
[5] => 89009
[case] => Random Stuff: 899
[PHP Version] => 5.3.29
)