php - 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 包含嵌套数组。请给我一些解释。
解决方案
当您找到一个列表时,您仍在运行下一个比较...
if($v>100){
$list[]=$v;
}
此时您将数组与 100 进行比较,这也将添加到数组中$list
。
将其更改为 an elseif
,它将执行一个或另一个......
elseif($v>100){
$list[]=$v;
}
推荐阅读
- python - 再次按下按钮后如何使窗口刷新?
- pandas - 逐行平均回报 nan
- unity3d - 使用行为树进行玩家移动的想法有多好?
- dynamics-365 - Dynamics 365 for field service 未在实体控件部分显示“可编辑网格”选项
- c# - OpenXml SpreadsheetDocument SaveAs() 生成损坏的文档 - 为什么?
- c# - 将多个列表合并到一个列表中,每个列表都有属性
- html - 当 HTML 和 CSS 在同一个编辑器页面中时,如何在鼠标悬停时放大图像
- apache-spark - Spark Streaming 接收器只处理一条记录
- asciidoc - 是否可以使用 `xxx` 在 AsciiDoctor 中定义词干公式?
- python - 这里有什么区别阻止它工作?