在 PHP中從平面數組建立樹結構
問題:
你有由具有「id」和「parent_id」欄位的元素組成的平面數組,其中每個元素最多可以有一位父母和零個或多個孩子。當'parent_id'為0時,此元素為根級項目。目標是將這個平面數組重組為具有子父關係的分層樹。
解決方案:
提供的函數 buildTree() 有效地完成了此任務透過迭代輸入數組並遞歸構建樹結構。輸出樹中的每個元素都包含其 ID、父 ID 和子元素陣列。
實作:
function buildTree(array &$elements, $parentId = 0) { $branch = array(); foreach ($elements as $element) { if ($element['parent_id'] == $parentId) { $children = buildTree($elements, $element['id']); if ($children) { $element['children'] = $children; } $branch[] = $element; unset($elements[$element['id']]); } } return $branch; }
'unset'呼叫:
在上面的程式碼中,unset() 呼叫對於維護層次結構至關重要結構。它從原始輸入數組中刪除已處理的元素,確保元素在樹中不重複。
範例:
考慮提供的輸入陣列:
[_319_] => [...], [_320_] => [...], [_321_] => [...], [_322_] => [...], [_323_] => [...], [_324_] => [...], [_325_] => [...]
處理後,輸出樹維護父子關係關係:
[_319_] => [...], [_320_] => [ 'id' => '_320_', 'parent_id' => 0, 'children' => [ [_321_] => [...], [_325_] => [...] ] ], [_323_] => [ 'id' => '_323_', 'parent_id' => 0, 'children' => [ [_324_] => [...] ] ]
處理後,輸出樹維護父子關係關係:
因此,buildTree() 函數可讓您將具有父子關係的平面元素陣列轉換為PHP 中的結構化層次樹。以上是如何在 PHP 中從平面數組建立層次樹結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!