代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public static function list_to_tree( $lists, $childKey = 'children', $id = 'id', $pid = 'parent_id') { $items = []; $tree = []; foreach($lists as &$item){ // 获取出每一条数据的父id $ipid = &$item[$pid]; // 将每一个item的引用保存到$items中 $items[$item[$id]] = &$item; // 如果在map中没有设置过他的pid, 说明是根节点, pid为0, if (isset($items[$ipid])) { // 如果在map中没有设置过他的pid, 则将该item加入到他父亲的叶子节点中 $pItem = &$items[$ipid]; $pItem[$childKey][] = &$item; } else { // 将pid为0的item的引用保存到$tree中 $tree[$item[$id]] = &$item; } } return $tree; } |