【发布时间】:2017-11-22 15:00:46
【问题描述】:
我有异构嵌套数组(每个都包含标量和数组的混合,也可能包含标量和数组,等等递归)。目标是提取所有具有最大深度的数组。请注意,这并不意味着在任何给定子数组的“底部”(局部最大值)提取数组,而是在所有子数组中的最大深度。
例如:
$testArray= array(
'test1' => 'SingleValue1',
'test2' => 'SingleValue2',
'test3' => array(0,1,2),
'test4' => array(array(3,4,array(5,6,7)), array(8,9,array(10,11,12)),13,14),
'test5' => array(15,16,17, array(18,19,20)),
);
在此示例中,任何数组出现的最大深度是 3,并且在该深度有两个数组:
array(5,6,7)array(10,11,12)
代码应该找到这两个。 ([18,19,20] 子数组不包括在内,因为虽然它在其分支中处于最大深度,但总体而言处于较小的深度。)
我不知道从哪里开始。我尝试了很多东西:在递归函数等中使用foreach,但最终结果总是什么都没有,所有元素或最后一个迭代元素。如何解决这个问题?不需要完整的解决方案,只需提示从哪里开始即可。
【问题讨论】:
-
发布您已经尝试过的内容,我们可以帮助调试它
-
您是否在这个特定的数据集中寻找那些特定的数组?或者这是一个关于能够提取子数组的更深层次的问题吗?
-
我猜这个数组不是静态的?你怎么知道你需要的是 5 6 7 和 10 11 12?
-
我知道我需要这些,因为它们在 testArray 中嵌套最深
-
您可以做的是为最深的嵌套数组的级别设置标志,该数组可以初始化为 0。一旦遍历完所有这些,标志的新值就是嵌套最深的子数组。您必须再次运行迭代,以找到子数组处于标志级别(最深级别)的数组并将其打印出来。
标签: php multidimensional-array nested