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;
}
posted @ 2025-05-21 12:16  幽暗天琴  阅读(102)  评论(0)    收藏  举报