我想对数组中的每个元素调用一个函数。使用 foreach() 显然非常容易,但是当数组包含数组时,我开始分解。有人可以帮我解决一个函数,该函数将为数组中的一组数组中的每个键->值对执行一些代码。理论上,深度可以是无限的,但如果递归不起作用,最好的限制是 3 次迭代(数组中的数组中的数组)。
示例数组是从下面的 $_POST 中获取的数组:
Array ( [languages] => Array ( [0] => php [1] => mysql [2] => inglip ) [rates] => Array ( [incall] => Array ( [1hr] => 10 ) [outcall] => Array ( [1hr] => 10 ) ) )
只是为了确保,我想要做的是运行一段代码(一个函数),该代码传递给数组结构中的每个“结束节点”,因此在上面的示例中,它将在以下情况下被调用:
[0] => php [1] => mysql [2] => inglip [1hr] => 10 [1hr] => 10
...被发现。
感谢您的帮助,
詹姆斯
最佳答案
对于 Iterators 来说这是一份完美的工作:
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $key => $value) {
echo "$key => $value\n";
}
参见Introduction to SPL Iterators和 Live Demo on codepad
编辑:替代方案是 array_walk_recursive
as show in Finbarr's answer below
关于PHP foreach() 与数组中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5524227/