從數組列表構建樹結構
給定一個具有層次關係的項目數組列表,我們如何有效地將其轉換為嵌套樹結構?
解決方案:
為了在不使用複雜的資料庫最佳化的情況下實現這種轉換,我們可以使用遞歸函數:
$arr = array( array('id' => 100, 'parentid' => 0, 'name' => 'a'), array('id' => 101, 'parentid' => 100, 'name' => 'a'), array('id' => 102, 'parentid' => 101, 'name' => 'a'), array('id' => 103, 'parentid' => 101, 'name' => 'a'), ); $new = array(); foreach ($arr as $a) { $new[$a['parentid']][] = $a; } $tree = createTree($new, array($arr[0])); print_r($tree); function createTree(&$list, $parent){ $tree = array(); foreach ($parent as $k => $l){ if(isset($list[$l['id']])){ $l['children'] = createTree($list, $list[$l['id']]); } $tree[] = $l; } return $tree; }
這段程式碼將項目排列成嵌套的層次結構,表示它們之間的父子關係。可以使用 print_r 列印產生的樹狀結構。
透過利用遞歸函數,我們可以有效地將陣列列表轉換為樹結構,從而輕鬆導航和組織資料。
以上是如何從分層數組列表有效率地建構樹結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!