PHP使用递归方式生成树状列表,可生成栏目列表、权限列表

使用递归方式生成树状列表,用于后台栏目列表、权限节点等。

/**
 * 递归方式获取树状列表
 * @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;
}