首页 > 解决方案 > Lopp递归遍历多维数组

问题描述

我正在学习递归。我有二维数组。我想得到大于 100 的数字

$arr=[923,100=>[123,158,12],111,12];
check_number($arr)

function check_number($arg){
        static $list=[];
        foreach($arg as $k=>$v){
            if(is_array($v)){
                check_number($v);
            }
            if($v>100){
                $list[]=$v;
            }
          
        }
        return $list;
    }

结果是一个数组:

 array:5 [▼
      0 => 923
      1 => 123
      2 => 158
      3 => array:3 [▼
        0 => 123
        1 => 158
        2 => 12
      ]
      4 => 111

我不明白为什么键 3 包含嵌套数组。请给我一些解释。

标签: phparraysrecursion

解决方案


当您找到一个列表时,您仍在运行下一个比较...

if($v>100){
    $list[]=$v;
}

此时您将数组与 100 进行比较,这也将添加到数组中$list

将其更改为 an elseif,它将执行一个或另一个......

elseif($v>100){
    $list[]=$v;
}

推荐阅读