【问题标题】:PHP print_r function does not nest the printed array [duplicate]PHP print_r函数不嵌套打印的数组[重复]
【发布时间】:2018-07-09 21:45:37
【问题描述】:

我使用print_r 函数打印从数据库表中获取的数组。而不是像这样格式良好的数组:

Array
(
    [0] => Array
        (
            [id] => 1
            [firstname] => Firstname one
            [lastname] => Lastname one
        )

    [1] => Array
        (
            [id] => 2
            [firstname] => Firstname two
            [lastname] => Lastname two
        )

    [2] => Array
        (
            [id] => 3
            [firstname] => Firstname three
            [lastname] => Lastname three
        )
)

我得到了内联结果,如下所示:

Array ([0] => Array ([id] => 1 [firstname] => Firstname one [lastname] => Lastname one ) [1] => Array ([id] => 2 [firstname] => Firstname two...

这是一个简单的例子,我的实际数组嵌套了 3 次,所以结果是一大块内联字符串,难以阅读。

为什么我会得到这样的结果?

【问题讨论】:

  • 在 print_r 之前和之后 回显
  • 稍微扩展该评论​​ -- print_r() 不会生成 HTML,它会生成纯文本。如果你想让它在浏览器中很好地显示,你必须添加标记。
  • 为什么?因为您正在网页上打印,并且浏览器正在重新格式化,就像它处理任何其他文本一样。
  • var_dump , print_r 可能更好 var_export stackoverflow.com/questions/19816438/make-var-dump-look-pretty/… 可以与 highlight_string 一起使用。

标签: php arrays


【解决方案1】:

发生这种情况仅仅是因为您将纯文本直接打印到您的网页上,这会自动重新格式化文本,幸运的是有一个解决方案。

以下代码将“漂亮地打印”您的 PHP 数组。

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

HTML &lt;pre&gt; 标签用于指示预格式化的文本。代码 标签围绕着被标记的代码。

https://www.tutorialspoint.com/html/html_pre_tag.htm

print_r() 的第二个参数告诉函数捕获print_r() 的输出,而不是将其打印为纯文本。 Learn more on the PHP docs.

这两种方法放在一起使输出“美化”。


正如 cmets 中的 dognose 所指出的,如果您出于某种原因不想使用 &lt;pre&gt; 标签,您可以简单地查看您正在处理的页面的源代码,它会在一种“不错”的时尚。

dognose 发布的示例:


功能

我写了一个漂亮的打印函数,可以让你更轻松地做到这一点......

function print_p($arr) {
    return "<pre>".print_r($arr, true)."</pre>";
}

这可以节省您每次输入 pre 标签的大量时间/精力。用法:

echo print_p($array);

【讨论】:

  • 或者 - 如果你想避免&lt;pre&gt;-tags,只需检查页面的源代码。它将以“漂亮”的方式显示数组,没有&lt;pre&gt;
  • @dognose 希望你不介意,我已将其添加到我的答案中。
  • 太好了,谢谢!将在一分钟内接受答案:)
  • @GrumpyCrouton “不管是什么原因”是:键入字符串连接比 print_r($arr) 然后在 Chrome 中单击“右键”->“检查元素”更耗时:P
  • 我确信还有其他原因@dognose :) 在这种情况下,为什么不创建一个包含 pretags 的新函数呢?
猜你喜欢
  • 2018-07-04
  • 1970-01-01
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 2017-09-18
  • 1970-01-01
相关资源
最近更新 更多