使用递归方式生成树状列表,用于后台栏目列表、权限节点等。
/** * 递归方式获取树状列表 * @param array $data 数组必须含有id、pid字段 * @param int $pid * @param string $dataid * @param int $level * @return array */ public static function menuTree(array $data, int $pid = 0, string $dataid = 'id', int $level = 1) { static $arr = []; foreach ($data as $k => $v) { if ($v['pid'] == $pid) { $v['level'] = $level; $v['dataid'] = $dataid . '-' . $v['id']; $arr[] = $v; self::menuTree($data, $v['id'], $v['dataid'], $level + 1); } } return $arr; }