/**
* 定义函数递归调用获得需要的结构的数组
* @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;
}