将函数应用于数组节点,直到数组节点不是数组

时间:2012-06-19 20:46:41

标签: php

假设我在数组中有这个结构:

Array
(
    [0] => Array
        (
            [0] => Heading1
            [1] => Array
                (
                    [0] => Array
                        (
                            [0] => 2
                            [1] => Heading2.1
                        )

                    [1] => Array
                        (
                            [0] => 2
                            [1] => Heading2.2
                        )

                )

        )

    [1] => Array
        (
            [0] => Heading1.2
        )

)

如何仅将函数应用于包含heading2.1和标题2.2的数组元素?

我想要应用的函数可以进一步嵌套数组。我怎样才能使我的函数也能在这些新创建的数组上运行?然后创建的数组,直到第二个最深层没有数组?

3 个答案:

答案 0 :(得分:2)

递归循环,使用is_array()函数检查它是否为数组,如果是,请应用您的函数。

答案 1 :(得分:1)

天真的递归不会做,并且重新运行递归是双重否。您想在这里使用的是topological sorting

  

在计算机科学中,拓扑排序(有时缩写为topsort或toposort)或有向图的拓扑排序是其顶点的线性排序,使得对于每个边 uv u 在排序中位于 v 之前。

答案 2 :(得分:0)

如果内容是一个数组,你可以在你将在每个节点上执行的函数中使用array_walk()和test ...

http://php.net/manual/en/function.array-walk.php