从多维数组中获取值

时间:2013-11-22 09:56:19

标签: php arrays multidimensional-array

我有下面给出的数组结构...这里我想通过动态获取所有最终子的id值,因为这个数组可能有很多子。我如何通过动态获得每个最终孩子的id值? 我想从这个

这样的数组结构中得到值
6
7
8
9
17

Array
(
    [0] => Array
        (
            [id] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 4
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 6
                                        )

                                )

                        )

                    [1] => Array
                        (
                            [id] => 5
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 7
                                        )

                                )

                        )

                )

        )

    [1] => Array
        (
            [id] => 2
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 8
                        )

                    [1] => Array
                        (
                            [id] => 9
                        )

                )

        )

    [2] => Array
        (
            [id] => 3
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 10
                        )

                    [1] => Array
                        (
                            [id] => 16
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 17
                                        )

                                )

                        )

                )

        )

)

2 个答案:

答案 0 :(得分:1)

使用递归很容易:

function get_final($arr) {
    $out = array();
    if(is_array($arr)) {
        foreach($arr as $a) {
            $out = array_merge($out, get_final($a));
        }
        return $out;
    }
    else return array($arr);
}

答案 1 :(得分:1)

这将返回带递归的端点

function getIds($data){
    $out = array();
    if(is_array($data)){
            foreach($data as $elm){
                    if($elm['children']){
                            $out = array_merge($out,getIds($elm['children']));
                    }else{
                            $out[] = $elm['id'];
                    }
            }
    }
    return $out;
}