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 を保持する配列要素にのみ関数を適用するにはどうすればよいですか?

適用したい関数は、配列をさらにネストする場合があります。関数がこれらの新しく作成された配列でも実行されるようにするにはどうすればよいですか? そして、2番目に深いレベルに配列がなくなるまで、作成される配列は?

4

3 に答える 3

2

再帰的にループし、is_array()関数を使用して配列であるかどうかを確認し、そうであれば関数を適用します。

于 2012-06-19T20:48:44.390 に答える
1

単純な再帰ではうまくいかず、再帰を再実行することは二重のノーです。ここで使用したいのはトポロジカル ソートです。

コンピューター サイエンスでは、トポロジカル ソート(topsort または toposort と略されることもあります) または有向グラフのトポロジカル順序付けは、頂点の線形順序付けであり、すべてのエッジuvについて、順序付けでuが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 に答える