代码之家  ›  专栏  ›  技术社区  ›  Pattatharasu Nataraj burakarasu

如何从多维数组中获取所有值

  •  2
  • Pattatharasu Nataraj burakarasu  · 技术社区  · 6 年前

    海先看看这个阵列,

    Array
    (
        [0] => Array
            (
                [id] => 4
                [parent_id] => 3
                [children] => Array
                    (
                        [0] => Array
                            (
                                [id] => 7
                                [parent_id] => 4
                                [children] => Array
                                    (
                                        [0] => Array
                                            (
                                                [id] => 6
                                                [parent_id] => 7
                                                [children] => Array
                                                    (
                                                        [0] => Array
                                                            (
                                                                [id] => 2
                                                                [parent_id] => 6
                                                            )
    
                                                    )
    
                                            )
    
                                    )
    
                            )
    
                    )
    
            )
    
        [1] => Array
            (
                [id] => 5
                [parent_id] => 3
            )
    
    )
    

    我需要一些像

    foreach ($tree as $j) {
        echo $j['id'];
        if($j['children']){
    
        }
    

    但是如何循环得到所有孩子的?我无法捕获所有子元素,否则我将被拖到无限循环中如何在php中获得所需的结果?任何建议都将不胜感激!

    2 回复  |  直到 6 年前
        1
  •  6
  •   Jeto    6 年前

    应该是这样的:

    $result = [];
    array_walk_recursive($input, function($value, $key) use(&$result) {
        if ($key === 'id') {
            $result[] = $value;
        }
    });
    
        2
  •  1
  •   TheQueenOfCSS    6 年前

    必须使用递归函数,如:

    function getIds($tree) {
            foreach ($tree as $j) {
                echo $j['id'];
                if(isset($j['children'])){
                    getIds($j['children']);
                }
            }
        }
    

    getIds($tree);