PHP多维数组-提取儿童/父母

时间:2018-12-12 12:36:22

标签: php arrays parsing

我正在尝试解析一个像这样的多维数组: 例如,我想提取 NAME => Ma,的所有子代的名字,以及它们的所有子代的名字。

Array
(
[0] => Array
    (
        [ID] => 35
        [Name] => Ma
        [Note] => 
        [parent_id] => 0
        [children] => Array
            (
                [0] => Array
                    (
                        [ID] => 55
                        [Name] => OS
                        [Note] => 
                        [parent_id] => 35
                        [children] => Array
                            (
                                [0] => Array
                                    (
                                        [ID] => 416
                                        [Name] => fs
                                        [Note] => 
                                        [parent_id] => 55
                                        [children] => Array
                                            (
                                            )

                                    )

                                [1] => Array
                                    (
                                        [ID] => 921
                                        [Name] => fd
                                        [Note] => 
                                        [parent_id] => 55
                                        [children] => Array
                                            (
                                            )

                                    )

                                [2] => Array
                                    (
                                        [ID] => 980
                                        [Name] => FP
                                        [Note] => 
                                        [parent_id] => 55
                                        [DomainID] => 1
                                        [children] => Array
                                            (
                                            )

                                    )

                                    )

                            )
                    )

                [1] => Array
                    (
                        [ID] => 59
                        [Name] => PC
                        [Note] => 
                        [parent_id] => 35
                        [children] => Array
                            (
                                [0] => Array
                                    (
                                        [ID] => 60
                                        [Name] => IT
                                        [Note] => 
                                        [parent_id] => 59
                                        [children] => Array
                                            (
                                            )

                                    )

数组一直这样。更多的父母,更多的孩子... 我要提取的唯一数据是“名称”,但我需要以某种方式来获取它们,以便他们知道它们属于哪个父级。

foreach($outArray as $row => $innerArray){
foreach($innerArray as $innerRow => $value){
echo $value . "<br/>";

我尝试提取数据的一种方法,但是没有任何子项。

1 个答案:

答案 0 :(得分:2)

php中有一个名为array_walk_recursive的函数可以处理此问题。您可以使用它。我已经为您准备了示例代码。请看下面:

$results = array();

array_walk_recursive($array, function ($item, $key) use (&$results){
    if ($key == 'Name') {
        $results[] = $item;
    }
});

var_dump($results);

上面的代码将输出数组中所有“名称”键的值。

请告知我这是否是您所期望的。您可以在array_walk_recursive Here

中找到更多信息

希望这会有所帮助。