データベース結果から多次元配列を再帰的に生成する
このシナリオの目標は、データベースから取得した階層データのネストされた配列表現を構築することです。データベースクエリ。結果テーブルには、親子関係を持つページまたはカテゴリが含まれます。
これを実現するために、再帰関数 buildTree() を使用します。この関数は、要素の配列とオプションの親 ID (デフォルトは 0) を受け取ります。各要素を反復処理して、指定された親 ID を持つ要素を識別します。
各子要素に対して、関数はそれ自体を再帰的に呼び出してそのサブツリーを取得します。次に、子要素がその子で拡張され、階層構造が形成されます。このプロセスは、すべての要素が処理されるまで継続され、階層データ構造を反映するネストされた配列が生成されます。
例
前に示したデータベース テーブルについて考えてみましょう。
id | parent_id | title |
---|---|---|
1 | 0 | Parent Page |
2 | 1 | Sub Page |
3 | 2 | Sub Sub Page |
4 | 0 | Another Parent Page |
buildTree() 関数を使用すると、必要なネストされたオブジェクトを生成できます配列:
$elements = [ ['id' => 1, 'parent_id' => 0, 'title' => 'Parent Page'], ['id' => 2, 'parent_id' => 1, 'title' => 'Sub Page'], ['id' => 3, 'parent_id' => 2, 'title' => 'Sub Sub Page'], ['id' => 4, 'parent_id' => 0, 'title' => 'Another Parent Page'], ]; $tree = buildTree($elements);
出力 $tree は次のようになります:
[ [ 'id' => 1, 'parent_id' => 0, 'title' => 'Parent Page', 'children' => [ [ 'id' => 2, 'parent_id' => 1, 'title' => 'Sub Page', 'children' => [ [ 'id' => 3, 'parent_id' => 2, 'title' => 'Sub Sub Page', ] ] ] ] ], [ 'id' => 4, 'parent_id' => 0, 'title' => 'Another Parent Page', ] ]
このネストされた配列は、データベース テーブルで定義された階層関係を保持し、ネストされたデータへの効率的なアクセスと処理を可能にします。構造。
以上が階層データベースのデータから多次元配列を再帰的に構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。