在做分销系统的时候,上下级的关系只有父id的情况下,获得这个id的所有下线,下线的下线
public function countLine($parentId,$router,$routerArr){
//$parentId 上级的ID/(下级的上级ID)
//$router 实时路由,当用户没有下级的时候,赋值给路由数组
//$routerArr 路由数组,用户id为键名,键值为路由
$routerArr[$parentId] = $router; //当前用户的路由
$sql = "SELECT id FROM user WHERE parentid = '".$parentId."' ";
$query = $this->db->query($sql);
if($query->num_rows() > 0 ){
$all = $query->result_array();
$number = count($all);
foreach ($all as $key => $value) {
$nextRouter = $router.','.$value['id'];
$query = $this->countLine($value['id'],$nextRouter,$routerArr);
$number += $query['number'];
$routerArr =& $query['routerArr'];
}
}else{
$number = 0;
}
return array("number"=>$number,"router"=>$router,"routerArr"=>$routerArr);
}
public function showCountLine(){
var_dump($this->countLine('100','100',array()));
}
一般比较方便的做法是下级保留上级的路由,这个路由包含了所有关联的上级id关系例如一个用户的ID为1000,这个用户的上级的ID是900,上级的上级是800,那么他的路由应该保存为:系统,100,200...800.900,1000。