为什么 <pre> 在单行串联回声中使用时输出不同?

问题描述

一件小事,但令人恼火。为什么会这样:

echo "<pre>".print_r($array)."</pre>";

...输出

Array ( [0] => SP2 [1] => SP1 [2] => ennis123 )

然而,这是:

echo "<pre>";
print_r($array_of_refs_for_rm);
echo "</pre>";

...输出

Array
(
    [0] => SP2
    [1] => SP1
    [2] => ennis123
)

我只想在调试时在代码中节省一些垂直空间。

解决方法

因为 print_r() 在输出中写入。

您可以使用第二个参数来重定向变量中的输出。

echo "<pre>".print_r($array,true)."</pre>";

在您的情况下,输出是在 <pre> 标记之前

请注意,函数 var_export() 具有相同的行为。