ホームページ >バックエンド開発 >PHPチュートリアル >階層データベースのデータから多次元配列を再帰的に構築する方法

階層データベースのデータから多次元配列を再帰的に構築する方法

DDD
DDDオリジナル
2024-12-16 03:10:09950ブラウズ

How to Recursively Build a Multidimensional Array from Hierarchical Database Data?

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

このシナリオの目標は、データベースから取得した階層データのネストされた配列表現を構築することです。データベースクエリ。結果テーブルには、親子関係を持つページまたはカテゴリが含まれます。

これを実現するために、再帰関数 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 サイトの他の関連記事を参照してください。

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