我尝试使用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
答案 0 :(得分:2)
你不应该echo
任何在creen上打印某些内容的函数,例如print_r
。
代号1应该如下所示:
echo "<pre>";
print_r($mixed_array);
echo "</pre>";
请注意,没有&#34; echo&#34;之前&#34; print_r&#34;。
答案 1 :(得分:1)
查看有关print_r
:http://php.net/manual/en/function.print-r.php
来自手册:
print_r()以某种方式显示有关变量的信息 人类可读。
显示,不返回。所以你不应该使用echo
; print_r
是某种echo
。但您可以使用第二个参数
echo
函数
如果要捕获print_r()的输出,请使用return 参数即可。当此参数设置为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
)
答案 2 :(得分:1)
您的第一个代码会打开<pre>
代码,然后输出$mixed_array
,然后执行echo 1
,然后关闭<pre>
代码。
您的第二个代码计算"<pre>".print_r($mixed_array)."</pre>"
会触发$mixed_array
之前的echo
,然后是计算结果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>";