ホームページ >バックエンド開発 >PHPチュートリアル >フラットデータベースの結果から多次元配列を再帰的に構築するにはどうすればよいですか?

フラットデータベースの結果から多次元配列を再帰的に構築するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-14 01:40:10213ブラウズ

How to Recursively Build a Multidimensional Array from Flat Database Results?

データベース結果から再帰的に多次元配列を構築する

フラット データベース結果からページやカテゴリ メニューなどの階層データ構造を取得するには、再帰関数を使用できます。この関数は、元の配列を取得し、親子関係に基づいてネストされた配列に編成します。

関数:

function buildTree(array $elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['id']);
            if ($children) {
                $element['children'] = $children;
            }
            $branch[] = $element;
        }
    }

    return $branch;
}

仕組み:

  1. 関数は要素の配列とオプションの親 ID を受け取ります。デフォルトは
  2. 配列内の各要素を反復処理します。
  3. 要素の親 ID が指定された親 ID と一致する場合、その要素はその親の子とみなされます。
  4. この関数はそれ自体を再帰的に呼び出して、現在の子要素のすべての子を検索します。
  5. 要素に子がある場合、それらは配列として現在の要素の 'children' キー。
  6. 最後に、関数は指定された親の子要素の配列を返します。

使用例:

これを使用してサンプル データベースの結果を多次元配列に変換するにはfunction:

$tree = buildTree($rows);

ここで、$rows はデータベース結果の元の配列です。

出力:

結果の階層配列は、目的の配列と似ています。出力:

Array
(
    [0] => Array
        (
            [id] => 1
            [parent_id] => 0
            [title] => Parent Page
            [children] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 2
                                    [parent_id] => 1
                                    [title] => Sub Page
                                    [children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 3
                                                            [parent_id] => 1
                                                            [title] => Sub Sub Page
                                                        )
                                                )
                                )
                        )
            [children] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 4
                                    [parent_id] => 0
                                    [title] => Another Parent Page
                                    [children] => Array
                                                (

                                                )
                                )
                        )
        )
)

以上がフラットデータベースの結果から多次元配列を再帰的に構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。