PHP foreach() 与数组中的数组?

标签 php arrays iteration

我想对数组中的每个元素调用一个函数。使用 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 IteratorsLive Demo on codepad

编辑:替代方案是 array_walk_recursive as show in Finbarr's answer below

关于PHP foreach() 与数组中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5524227/

相关文章:

java - java中使用递归求数组中正元素的总和

python - Python 中与 finditer() 的重叠匹配

python - 如何避免 python 中的 StopIteration 错误

php - Mysql从一个表中选择全部,从另一个表中选择一些使用别名

php - 传递带空双撇号的 PHP 参数

ios - Swift-在将最新通知附加到数组后,所有 UILocalNotification 时间都发生了变化

java - 迭代 Collection,避免在循环中删除对象时出现 ConcurrentModificationException

php - 如果达到 div 高度,则强制将内容放到新的打印页面上

php - 如何使用 bitnami/linux 终端更改我的 php 应用程序的 php 版本

javascript - 关于将 javascript 中的数组插入 HTML 中的段落元素的基本帮助