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

Why does <pre> output differently when used in a one-line concatenated echo?

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

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
)

我只是想在调试时在我的代码中保存一些垂直 space。

因为print_r()写入输出。

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

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

在您的例子中,输出是在 <pre> 标签之前生成的。

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