print_r字符串串联


print_r with string concatenation

我试图用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
)