從資料庫結果遞歸產生多維數組
在此場景中,目標是建構從資料庫擷取的分層資料的巢狀數組表示資料庫查詢。結果表包含具有父子關係的頁面或類別。
為了實現此目的,我們使用遞歸函數 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中文網其他相關文章!