我有N级数组
$array = [
[
'id' => 67941,
'parent_id' => 0,
'name' => 'Requirement',
'children' => [
[
'id' => 67942,
'parent_id' => 67941,
'name' => 'Sub Requirement',
'children' => [
[
'id' => 67943,
'parent_id' => 67942,
'name' => 'Sub Sub Requirement',
],
],
],
],
],
//...
];
我想搜索67943-它位于数组的第三个索引级别(实际上是第五个级别)。我可以使用array_walk_recursive()
来查找值是否存在,但我需要收集指向该值的索引的完整路径,例如$array[0][0][0]['id']
。
我不能硬编码的水平,我需要一个解决方案,可以与100级以上的数组工作。
1条答案
按热度按时间doinxwow1#
我对RecursiveIteratorIterator类或它的同类没有太多的经验,但我能够修改this answer以满足您的条件需求。
在遍历数组时,如果键是“children”,则不缓存该键。
如果该值是搜索值,则捕获键的当前路径并中断循环。
我不明白为什么你想要一个
$array[0][0][0]['id']
的返回值,所以我只返回一个包含键的平面数组。代码:(Demo)
输出: