0

次のような配列があります。

$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(),
                ),
            ),
        ),
    );

しかし、より大きなスケールで。

検索された要素のIDを引数として受け取り、そこにたどり着くまでに通過した名前を返すphp再帰関数を書きたいと思います。たとえば、id==4の場合、結果は次のようになります。

配列 ('n1', 'n17');

4

1 に答える 1

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);
于 2013-08-24T16:31:30.240 に答える