DeTechn Blog

PHP生成rbac树形结构数据

/**
 * 定义函数递归调用获得需要的结构的数组
 * @param array $arrs 递归后的值
 * @param array $data 需要整理的数组
 * @param array $rules 角色所拥有的权限
 * @param int $pid  父id
 * @return mixed 规定格式的数组
 */
function recur($arrs,$data,$rules = [],$pid = 0)
{
    foreach ($data as $k => $v)
    {
        //判断该节点是否有子节点
        if($v['pid'] == $pid)
        {
            //如果有,将该节点作为信息作为父几点
            $v['status'] == 1 ? $status = false : $status = true;
            $spread = false;
            if(in_array($v['id'],$rules))
            {
                $spread = true;
            }
            $arr = ['title' => $v["title"],'id'=>$v['id'],'spread'=>$spread,'disabled'=>$status,'children'=>[]];
            //递归调用recur函数,将子节点的id作为pid传回去,判断是否有子节点,然后将值赋予到现在即诶但的子节点,知道数组循环结束
            $arr['children'] = recur($arr["children"],$data,$rules,$v['id']);
            //执行完递归后将结果追加到空数组中
            array_push($arrs,$arr);
        }
    }
    return $arrs;
}

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »