1、无限级递归查找下级
(1)调用
public function tree() {
$id = (I('get.id'));
$xiaji = Db::name('users')->where('FIND_IN_SET(' . $id . ',leader_arr)')->field('user_id,nickname,head_pic,level,first_leader')->select();//查找出所有下级用户
$json = $this->xiaji($xiaji, $id);//无限极递归下级归属
// halt($json);
$json = json_encode($json);
$this->assign('json', $json);
return $this->fetch();
}
(2)下级递归方法
public function xiaji($xiaji, $pid) {
$ret = [];//定义空数组
//循环遍历
foreach ($xiaji as $k => $v) {
if ($v['first_leader'] == $pid) {//如果上级id 和当前传递的id相等插入数组
$v['id'] = $v['user_id'];
$v['name'] = $v['nickname'];
$v['position'] = $v['level'];
$v['photos'] = $v['head_pic'];
unset($xiaji[$k]);//删除已经插入数组的数据不然会无限循环
$v['children'] = $this->xiaji($xiaji, $v['user_id']);//循环剩余的内容放到它的下级
$ret[] = $v;//赋值到数组
}
}
return $ret;
}