首頁 >後端開發 >php教程 >如何從分層資料庫資料遞歸建構多維數組?

如何從分層資料庫資料遞歸建構多維數組?

DDD
DDD原創
2024-12-16 03:10:09952瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn