以可读/分层格式显示数组

Xav*_*ier 87 php sql

这是为我的数组提取数据的代码

<?php
    $link = mysqli_connect('localhost', 'root', '', 'mutli_page_form');

    $query = "SELECT * FROM wills_children WHERE will=73";

    $result = mysqli_query($link, $query) or die(mysqli_error($link));

    if ($result = mysqli_query($link, $query)) {

    /* fetch associative array */
    if($row = mysqli_fetch_assoc($result)) {
        $data = unserialize($row['children']);
    }

    /* free result set */
    mysqli_free_result($result);
    }
?>
Run Code Online (Sandbox Code Playgroud)

当我使用print_r($ data)时,它读作:

Array ( [0] => Array ( [0] => Natural Chlid 1 [1] => Natural Chlid 2 [2] => Natural Chlid 3 ) ) 
Run Code Online (Sandbox Code Playgroud)

我希望它读作:

自然孩子1
自然孩子2
自然孩子3

小智 400

代替

print_r($data);
Run Code Online (Sandbox Code Playgroud)

尝试

print "<pre>";
print_r($data);
print "</pre>";
Run Code Online (Sandbox Code Playgroud)

  • 还值得一提的是,您可以将`true`作为第二个参数传递给print_r,以将数据作为`string`.现在你可以从你的路线文件中"返回"<pre>'.print_r(User :: all(),true);`. (3认同)

jet*_*com 58

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


dit*_*tto 46

我有一个基本功能:

function prettyPrint($a) {
    echo "<pre>";
    print_r($a);
    echo "</pre>";
}

prettyPrint($data);
Run Code Online (Sandbox Code Playgroud)

编辑:优化功能

function prettyPrint($a) {
    echo '<pre>'.print_r($a,1).'</pre>';
}
Run Code Online (Sandbox Code Playgroud)

编辑: Moar优化功能,支持自定义标签

function prettyPrint($a, $t='pre') {echo "<$t>".print_r($a,1)."</$t>";}
Run Code Online (Sandbox Code Playgroud)

  • 到目前为止最好的答案,如果经常使用逗号,你甚至可以更优化它:`echo'<pre>',print_r($ a,1),'</ pre>';` (7认同)

Bri*_*oll 28

试试这个:

foreach($data[0] as $child) {
   echo $child . "\n";
}
Run Code Online (Sandbox Code Playgroud)

代替 print_r($data)

  • 当<pre> </ pre>是显而易见的选择时,为什么这是选择的答案呢? (49认同)
  • @Alesana是的,但OP没有多维数组.我认为,正如其他人对你想要的方式评论这个答案是`<pre> print_r($ data)</ pre>`.尽管看到5年以上的答案的新评论总是很有趣!:) (3认同)
  • 如果您有一个多维数组,这将不起作用。 (2认同)
  • 嗯,就我而言,我正在使用多维数组。我之前没有发表评论,所以当我看到别人都没有指出这一点时,我认为这可能是个绝妙的机会! (2认同)

Hex*_*dus 14

我认为var_export(),被遗忘的兄弟var_dump()拥有最好的输出 - 它更紧凑:

echo "<pre>";
var_export($menue);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

顺便说一下:使用它并不是必需的<pre>.当您查看网页的源代码时var_dump(),var_export()已经格式化了.

  • @ Chaya-Cooper它在显示的页面上没有正确格式化,但我认为Hexodus意味着它的格式是"在您的网页的_source代码中" - >尝试菜单"查看源代码",或者在Firefox中使用Ctrl-U (3认同)

sha*_*e93 11

如果有人需要查看数组这么酷;)使用此方法..这将打印到您的浏览器控制台

function console($obj)
{
    $js = json_encode($obj);
    print_r('<script>console.log('.$js.')</script>');
}
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用..

console($myObject);
Run Code Online (Sandbox Code Playgroud)

输出就像这样..太酷了呃!!

在此输入图像描述


Yar*_*ius 5

foreach($array as $v) echo $v, PHP_EOL;
Run Code Online (Sandbox Code Playgroud)

更新:更复杂的解决方案是:

 $test = [
    'key1' => 'val1',
    'key2' => 'val2',
    'key3' => [
        'subkey1' => 'subval1',
        'subkey2' => 'subval2',
        'subkey3' => [
            'subsubkey1' => 'subsubval1',
            'subsubkey2' => 'subsubval2',
        ],
    ],
];
function printArray($arr, $pad = 0, $padStr = "\t") {
    $outerPad = $pad;
    $innerPad = $pad + 1;
    $out = '[' . PHP_EOL;
    foreach ($arr as $k => $v) {
        if (is_array($v)) {
            $out .= str_repeat($padStr, $innerPad) . $k . ' => ' . printArray($v, $innerPad) . PHP_EOL;
        } else {
            $out .= str_repeat($padStr, $innerPad) . $k . ' => ' . $v;
            $out .= PHP_EOL;
        }
    }
    $out .= str_repeat($padStr, $outerPad) . ']';
    return $out;
}

echo printArray($test);
Run Code Online (Sandbox Code Playgroud)

这打印出来:

    [
        key1 => val1
        key2 => val2
        key3 => [
            subkey1 => subval1
            subkey2 => subval2
            subkey3 => [
                subsubkey1 => subsubval1
                subsubkey2 => subsubval2
            ]
        ]
    ]
Run Code Online (Sandbox Code Playgroud)