php递归查找树形用户关系团队总人数
users表中有
user_id:当前用户ID
first_leader:上级ID(是上级ID,不是第一级IID)
/**
* 通过 user_id 查 所有
*/
public function get_team_num(){
ini_set('max_execution_time', '0');
$user_id = I('user_id');
$all = M('users')->field('user_id,first_leader')->select();
$values = [];
foreach ($all as $item) {
$values[$item['first_leader']][] = $item;
}
//foreach ($all as $k => $v) {
$coumun = $this->membercount($user_id, $values);
//M('users')->where(['user_id'=>$v['user_id']])->update(['underling_number'=>$coumun]);
//$coumun += $coumun;
// }
M('users')->where(['user_id'=>$user_id])->update(['underling_number'=>$coumun]);
echo $coumun;
}
public function membercount($id, $data)
{
$count = 0;
$num = count($data[$id]);
if (empty($data[$id])) {
return $num;
} else {
$mun = 0;
foreach ($data[$id] as $key => $value) {
if (empty($data[$value['user_id']])) {
continue;
} else {
$mun += intval($this->membercount($value['user_id'], $data));
}
}
$num += $count;
}
return $num + $mun;
}