PHP print_r函数不嵌套打印的数组

bir*_*d03 2 php arrays

我使用该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
        )
)
Run Code Online (Sandbox Code Playgroud)

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

Array ([0] => Array ([id] => 1 [firstname] => Firstname one [lastname] => Lastname one ) [1] => Array ([id] => 2 [firstname] => Firstname two...
Run Code Online (Sandbox Code Playgroud)

这是一个简单的例子,我的实际数组嵌套了三次,因此结果是一个巨大的内联字符串块,使可读性变得困难.

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

Gru*_*ica 8

这种情况只是因为您将明文直接打印到您的网页,自动重新格式化文本,幸运的是有一个解决方案.

以下代码将"漂亮地打印"您的PHP数组.

echo "<pre>".print_r($array, true)."</pre>";
Run Code Online (Sandbox Code Playgroud)

HTML <pre>标记用于指示预格式化的文本.代码标记包围正在标记的代码.

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

第二个参数print_r()告诉函数捕获输出print_r()而不是将其打印为明文.了解有关PHP文档的更多信息.

将这两种方法放在一起使输出"美化".


正如评论中的dognose所指出的,如果你不想<pre>出于任何原因使用标签,你可以简单地查看你正在处理的页面的源代码,它将以"漂亮"的方式显示数组.

dognose发布的示例: 在此输入图像描述


功能

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

function print_p($arr) {
    return "<pre>".print_r($arr, true)."</pre>";
}
Run Code Online (Sandbox Code Playgroud)

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

echo print_p($array);
Run Code Online (Sandbox Code Playgroud)