使用递归方式生成树状列表,用于后台栏目列表、权限节点等。
/**
* 递归方式获取树状列表
* @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;
}