從數組列表建立數組樹
如果您有一個具有層次關係的元素列表,請將其轉換為樹狀結構結構可能至關重要。在處理需要高效組織和檢索的複雜資料時,這種轉換特別有用。
以以下列表為例:
[ {id: 100, parentId: 0, name: 'a'}, {id: 101, parentId: 100, name: 'a'}, {id: 102, parentId: 101, name: 'a'}, {id: 103, parentId: 101, name: 'a'}, ]
目標是將這個清單重新組織為分層結構樹結構,其中每個元素都有對其父元素及其子元素(如果有)的引用。
以下程式碼示範了完成此轉換的一種有效方法snippet:
<?php $arr = [ ['id' => 100, 'parentId' => 0, 'name' => 'a'], ['id' => 101, 'parentId' => 100, 'name' => 'a'], ['id' => 102, 'parentId' => 101, 'name' => 'a'], ['id' => 103, 'parentId' => 101, 'name' => 'a'], ]; $new = []; foreach ($arr as $a) { $new[$a['parentId']][] = $a; } $tree = createTree($new, [$arr[0]]); print_r($tree); function createTree(&$list, $parent) { $tree = []; foreach ($parent as $k => $l) { if (isset($list[$l['id']])) { $l['children'] = createTree($list, $list[$l['id']]); } $tree[] = $l; } return $tree; }
此程式碼透過根據元素的parentId 對元素進行分組來有效地處理輸入清單。然後,它遞歸地建構樹結構,用其子元素填滿每個元素。生成的樹提供了原始清單的分層表示,使基於父子關係的導航和檢索資料變得更加容易。
以上是如何有效率地將陣列列表轉換為層次樹結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!