PHP以递归方式遍历数组

时间:2013-08-24 15:51:40

标签: php arrays recursion

我有一个看起来像这样的数组:

$arr = array(
    array(
        'name'  =>  'n1',
        'id'    =>  0,
        'children' =>   array(
                array(
                    'name'  =>  'n2',
                    'id'    =>  1,
                    'children'  =>  array(
                        array(
                            'name'  =>  'n3',
                            'id'    =>  2,
                            'children'  =>  array(),
                        ),
                        array(
                            'name'  =>  'n4',
                            'id'    =>  3,
                            'children'  =>  array(),
                        ),
                    ),
                ),
                array(
                    'name'  =>  'n17',
                    'id'    =>  4,
                    'children'  =>  array(),
                ),
            ),
        ),
    );

但规模更大。

我想写一个php递归函数,它接收搜索到的元素的id作为参数,并返回它经过的名称,例如,对于id == 4,结果应为:

array('n1','n17');

1 个答案:

答案 0 :(得分:0)

function test($arr, $v, &$x){
    if($x==null)$x=array();
    foreach ($arr as $sub){
        if($sub['id']==$v){
            array_push($x,$sub['name']);
            return true;
        }
        if (test($sub['children'],$v,$x)){
            array_unshift($x,$sub['name']);
            return true;
        }
    }
}
test($myArr,4,$result);
print_r($result);