PHP递归查找所有下级用户,以当前用户为起点,无限级查找所有下级,多层级权限等同理
这里只做查询所有下级用户id,可根据需求进行修改,流程是第一次传一个用户id进来查询,查询不到返回空数组,查询到则取查询到的用户id继续查询下级,查到就追加进数组后继续查,查不到就返回。
//递归查找下级用户id $arr已保存的下级用户ids数组
public function userIdList($user_id = 0,$arr=[])
{
//查出用户的第一层下级
$ids = Db::name('xy_users')->where('parent_id','in',$user_id)->column('id');
if(!empty($ids)){
foreach ($ids as $k=>$v){
if(in_array($v,$arr)){
//如果这个id已经记录了,则跳过,避免记录多个同样的id
unset($ids[$k]);
}else{
//id没记录,追加记录进数组
$arr[] = $v;
}
}
if(!$ids){
//没有下级了,可以返回数组了
return $arr;
}else{
//用下级的id继续递归查找他们的下级
return $this->userIdList($ids,$arr);
}
}
return $arr;
}
每天进步一点点

浙公网安备 33010602011771号