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

再帰関数はどのようにしてフラット データベースの結果から多次元配列を構築できるのでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-30 06:15:12646ブラウズ

How Can a Recursive Function Build a Multidimensional Array from Flat Database Results?

再帰関数を使用したデータベース結果からの多次元配列の生成

ページやカテゴリなどの階層データを表す入れ子になった配列を生成するには、再帰関数を使用します採用されることが多いです。目標は、データベース レコードのフラット配列を取得し、それを親子関係を反映する構造化配列に変換することです。

ツリー構築のための再帰関数

以下関数 buildTree はこのタスクを達成します:

def buildTree(elements, parentId=0):
    branch = []
    for element in elements:
        if element['parent_id'] == parentId:
            children = buildTree(elements, element['id'])
            if children:
                element['children'] = children
            branch.append(element)
    return branch

その仕組みWorks

  1. ブランチの初期化: 指定された親 ID に対して、子要素を保持する空のブランチ リストを作成します。
  2. 要素の反復: フラット配列内のすべての要素をループします。
  3. 識別Children: 要素のparent_id が現在の親 ID と一致する場合、それはブランチの子です。
  4. Recurse for Children: 識別された子に対して関数を再帰的に呼び出し、そのサブを見つけます。 -children.
  5. ブランチに追加: 子要素とそのサブ子を追加します(存在する場合) ブランチ リストに追加します。
  6. Return Branch: すべての子が処理されたら、設定されたブランチ リストを返します。

使用例

データベースレコードを階層ツリーに処理するには、 use:

tree = buildTree(database_result)

ツリー変数には、ページまたはカテゴリの階層構造を表すネストされた配列が含まれるようになります。

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

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