print_r与字符串连接

时间:2016-03-11 07:27:33

标签: php arrays

我尝试使用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

3 个答案:

答案 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_rhttp://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>";