在 PHP 中從平面數組建立樹
在 PHP 中,從平面數組建立樹資料結構可能具有挑戰性。但是,可以透過應用遞歸和理解平面數組中的父子關係來簡化此任務。
給定一個平面數組,其中每個元素都有一個“id”和一個“parent_id”,目標就是將其轉換為層次樹。如果結果樹中的每個元素有子元素,則它應該有一個「children」屬性。
解決方案
提供的程式碼嘗試遞歸創建樹,但它將元素添加到分支後未能刪除該元素,導致同一元素出現多個副本。要解決這個問題,我們需要在將元素新增到分支後從平面數組中刪除該元素。
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['id']] = $element; unset($elements[$element['id']]); } } return $branch; }
說明
產生的數組將是一個分層樹,每個節點都包含其子節點作為嵌套數組,從而清晰地表示原始平面數組中的父子關係。
以上是如何在 PHP 中從平面數組高效建構樹結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!