2

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

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
        )

)

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

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

4

3 回答 3

2

递归遍历它,使用is_array()函数检查它是否是一个数组,如果是,应用你的函数。

于 2012-06-19T20:48:44.390 回答
1

天真的递归是行不通的,重新运行递归是一个双重否定。您要在这里使用的是拓扑排序

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

于 2012-06-19T20:59:01.133 回答
0

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

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

于 2012-06-19T20:51:30.110 回答