PHP:<pre> 标签不适用于 print_r

PHP: <pre> tag not working with print_r

我有两个代码片段。在第一个代码片段中,<pre></pre> 标记不起作用,而在第二个代码片段中它起作用。为什么这样?我在第一个代码片段中哪里出错了?

代码片段 1 这里不起作用

      <?php
        $arr1 = array(2, 3);
        $arr2 = $arr1;
        $arr2[] = 4; // $arr2 is changed,
                     // $arr1 is still array(2, 3)

        $arr3 = &$arr1;
        $arr3[] = 4; // now $arr1 and $arr3 are the same

        echo "arr1 : "."<pre>".print_r($arr1)."</pre><br>";
        echo "arr2 : "."<pre>".print_r($arr2)."</pre><br>";
        echo "arr3 : "."<pre>".print_r($arr3)."</pre><br>"; 
    ?>

代码片段 2 有效

    <?php
      if ($_POST) {
        echo '<pre>';
        echo htmlspecialchars(print_r($_POST, true));
        echo '</pre>';
      }
    ?>
    <form action="" method="post">
        Name:  <input type="text" name="personal[name]" /><br />
        Email: <input type="text" name="personal[email]" /><br />
        Beer: <br />
        <select multiple name="beer[]">
            <option value="warthog">Warthog</option>
            <option value="guinness">Guinness</option>
            <option value="stuttgarter">Stuttgarter Schwabenbräu</option>
        </select><br />
        <input type="submit" value="submit me!" />
    </form>

您的代码的问题是您将 pre 标签与 print_r 的输出连接在一起,因此您的代码首先打印数组,然后连接。

注意: 您应该传递 2nd 参数 true 以在 return.

中获取字符串输出

这样改成:

echo "arr1 : <pre>".print_r($arr1)."</pre><br>";

这个:

echo "arr1 : <pre>".print_r($arr1,true)."</pre><br>";

echo "arr1 : <pre>";
print_r($arr1);
echo "</pre><br>";