在PHP中回显多维数组

时间:2011-01-18 00:16:37

标签: php arrays multidimensional-array nested

我有一个多维数组,我试图找出如何简单地“回显”数组的元素。数组的深度未知,因此可以深度嵌套。

对于下面的数组,回显的正确顺序是:

This is a parent comment
This is a child comment
This is the 2nd child comment
This is another parent comment

这是我正在谈论的数组:

Array
(
    [0] => Array
        (
            [comment_id] => 1
            [comment_content] => This is a parent comment
            [child] => Array
                (
                    [0] => Array
                        (
                            [comment_id] => 3
                            [comment_content] => This is a child comment
                            [child] => Array
                                (
                                    [0] => Array
                                        (
                                            [comment_id] => 4
                                            [comment_content] => This is the 2nd child comment
                                            [child] => Array
                                                (
                                                )
                                        )
                                )
                        )
                )
        )

    [1] => Array
        (
            [comment_id] => 2
            [comment_content] => This is another parent comment
            [child] => Array
                (
                )
        )
)

9 个答案:

答案 0 :(得分:29)

<pre>
<?php print_r ($array); ?>
</pre>

答案 1 :(得分:14)

看起来你只是想从每个数组中写一个重要的值。尝试像这样的递归函数:

function RecursiveWrite($array) {
    foreach ($array as $vals) {
        echo $vals['comment_content'] . "\n";
        RecursiveWrite($vals['child']);
    }
}

您还可以使它更具动态性,并将'comment_content''child'字符串作为参数传递给函数(并在递归调用中继续传递它们)。

答案 2 :(得分:5)

正确,更好,更清洁的解决方案:

traverseArray($array)

您只需在当前/主要类中调用此辅助函数$this->traverseArray($dataArray); // Or // traverseArray($dataArray); ,如下所示:

console.log(req.user);

来源:http://snipplr.com/view/10200/recursively-traverse-a-multidimensional-array/

答案 3 :(得分:2)

print_r($arr)通常会给出非常可读的结果。

答案 4 :(得分:2)

如果您想将其存储为您可以执行的变量:

recurse_array($values){
    $content = '';
    if( is_array($values) ){
        foreach($values as $key => $value){
            if( is_array($value) ){
                $content.="$key<br />".recurse_array($value);
            }else{
                $content.="$key = $value<br />";
            }

        }
    }
    return $content;
}

$array_text = recurse_array($array);

显然你可以根据需要进行格式化!

答案 5 :(得分:0)

尝试使用var_dump功能。

答案 6 :(得分:0)

如果您要输出数据以进行调试和开发,Krumo非常适合生成易读的输出。查看example output

答案 7 :(得分:0)

递归通常是你的答案,但另一种方法是使用引用。见http://www.ideashower.com/our_solutions/create-a-parent-child-array-structure-in-one-pass/

答案 8 :(得分:0)

有多种方法

1) - print_r($array);或者如果你想要格式良好的数组那么

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

// --------------------------------------------- ----

2) - 使用var_dump($array)获取数组内容的更多信息,如数据类型和长度。 // ------------------------------------------------ -

3) - 你可以使用php&#39; s foreach();循环数组并获得所需的输出。

function recursiveFunction($array) {
    foreach ($array as $val) {
            echo $val['comment_content'] . "\n";
            recursiveFunction($vals['child']);
    }
}