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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-23 10:53:09546ブラウズ

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

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

問題:

ページとカテゴリの配列をフラット化されたデータベースの結果から、構造化された階層関係を持つネストされた配列。

解決策:

提供される解決策は、単純で汎用的なアプローチを提供します。

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. 初期実行 (ParentId = 0):

    • 要素の配列全体を考慮します。
    • parent_id が 0 に等しい要素を識別します (root
    • それらの要素に対して buildTree を再帰的に呼び出して、その子を検索します。
  2. 再帰実行 (ParentId != 0):

    • 要素のみを考慮します
    • それらの要素に対して buildTree を再帰的に呼び出して、子を検索します。
  3. 階層の構築:

    • 現在の親の子として識別された要素は、 array.
    • この配列は、親要素の "children" プロパティに割り当てられます。
  4. 戻り結果:

    • 再帰呼び出しは、各レベルの子要素の配列を返します。
    • この関数は、階層構造を表す完全なネストされた配列を返すことによって終了します。

この関数をデータベースの結果に適用すると、組織化された結果が得られます。目的の出力で例示されるように、詳細な階層関係を含む配列。このアプローチは多用途であり、ページとカテゴリの両方に適用できます。

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

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