使用HTML <pre> element</pre>打印数组的问题

时间:2014-09-03 00:15:03

标签: php

我正在尝试使用流畅的线

print_r包装在html <pre></pre>标签中
  

echo '<pre>',print_r($data),'</pre>';

$data = array();
$query = "SELECT * FROM data";
if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_assoc()) {
      $data[] = $row;
    }
    $result->free();
}
echo '<pre>',print_r($data),'</pre>';

但我得到的是在<pre>标记的开头和1</pre>函数末尾的print_r后跟随输出!

<pre>Array
(
    [0] => Array
        (
            [id] => 1
            [age] => 35
            [name] => Ben
            [sex] => M
        )

    [1] => Array
        (
            [id] => 2
            [age] => 64
            [name] => Rose
            [sex] => F
        )

    [2] => Array
        (
            [id] => 3
            [age] => 31
            [name] => Mar
            [sex] => F
        )

    [3] => Array
        (
            [id] => 4
            [age] => 14
            [name] => Mollan
            [sex] => M
        )

)            1</pre>

你可以告诉我最后的1是什么?为什么会这样?以及如何解决这个问题?

  

更新

由于什么原因,堆栈溢出输入框在数组结果的末尾没有显示1</pre>!我将把图像放在这里以供参考。

enter image description here

4 个答案:

答案 0 :(得分:2)

您需要通过传递TRUE将print_r的输出作为字符串返回。

echo '<pre>' . print_r($data, TRUE) . '</pre>';

个人printf看起来好一点

printf("<pre>%s</pre>",print_r($data,TRUE));

这里参考: http://php.net/manual/en/function.print-r.php

答案 1 :(得分:1)

您需要使用

print_r($data, true);

第二个参数是您要输出还是返回打印的数组。默认情况下,它设置为false,因此它将打印到位,返回1表示成功。

由于您正在使用print_r(连接它),因此需要将其作为字符串返回。

http://php.net/manual/en/function.print-r.php

答案 2 :(得分:0)

尝试一下:

echo '<pre>'; print_r($data); echo '</pre>';

答案 3 :(得分:-1)

问题出在你的echo语句中,你使用coma而不是句点来联系echo字符串。应该是这样读的:

echo '<pre>' . print_r($data) . '</pre>';