/** * 指定根層級的樹狀圖 * @param array $list 初始數組 * @param int $root 最上級一條數據的id * @param string $pk 每一條數據的id * @param string $pid 上下級關系的pid * @param string $child 自定義下級關系的字段 * @return array $tree 樹狀圖數組 */ function generateTree($list, $root = 0, $pk = 'id', $pid = 'pid', $child = '_child') { $tree = array(); $packData = array(); foreach ($list as $data) { $packData[$data[$pk]] = $data; } foreach ($packData as $key => $val) { if ($val[$pid] == $root) { //代表跟節點, 重點一 $tree[] = &$packData[$key]; } else { //找到其父類,重點二 $packData[$val[$pid]][$child][] = &$packData[$key]; } } return $tree; }
獲取無限極的層級,
public static function getTree($data, $pid, $level = 0) { $list = array(); foreach ($data as $k => $v) { if ($v['parent_id'] == $pid) { $v['level'] = $level; $v['name'] ='| — —' . str_repeat('| — —', $level) . $v['name'];// 這里可以加個層級次數 //一個層級增加一維數組
// $v['children'] = self::getTree($data, $v['id'], $level + 1); $list[] = $v;
//構建二級數組
$list = array_merge(self::getTree($data, $v['id'], $level + 1), $list);
} } return $list; }