PHP查询无限上下级
PHP查询无限下级
$arr:所有会员数据
$userid:查询的用户id
$valuetwo['spread_uid']:推荐人字段
public function xiaji($arr, $userid) { $return_arr=array();//最终结果 $userids=array($userid);//第一次执行时候的用户id do { $othermids=array(); $state=false; foreach ($userids as $valueone) { foreach ($arr as $key => $valuetwo) { if($valuetwo['spread_uid']==$valueone){ if ($valuetwo['agent_level'] >= 1){ $return_arr[]=$valuetwo['uid'];//找到我的下级立即添加到最终结果中 } $othermids[]=$valuetwo['uid'];//将我的下级id保存起来用来下轮循环他的下级 $state=true; } } } $userids = $othermids;//找到的下级集合,下次循环 } while ($state==true); return $return_arr;}
PHP
附:
public function ceshi(){ //模拟数据 $member = array( array('id'=>1, 'pid'=>0, 'nickname' => 'A'), array('id'=>2, 'pid'=>1, 'nickname' => 'B'), array('id'=>3, 'pid'=>2, 'nickname' => 'C'), array('id'=>4, 'pid'=>3, 'nickname' => 'D'), array('id'=>5, 'pid'=>4, 'nickname' => 'E'), array('id'=>6, 'pid'=>3, 'nickname' => 'F'), array('id'=>7, 'pid'=>3, 'nickname' => 'G'), array('id'=>8, 'pid'=>7, 'nickname' => 'H') ); $userid = 1;//用户id $return_arr = []; $res = $this->shangji($userid,$member,$return_arr); $res = $this->xiaji($member,1); } /** * 查询无限上级 * @param $userid 当前用户id * @param $member 模拟用户数据 * @param $return_arr 所有上级id的合级 * @return string */ public function shangji($userid,$member,$return_arr){ foreach($member as $k=>$v){ if($v['id']==$userid){ if($v['pid']==0){ return '无上级'; }else{ //有上级 $return_arr[] = $v['pid']; $this->shangji($v['pid'],$member,$return_arr); } } } dump($return_arr);die; } /** * 查询无限下级 * @param $members * @param $mid * @return array */ function xiaji($arr, $userid) { $return_arr=array();//最终结果 $userids=array($userid);//第一次执行时候的用户id do { $othermids=array(); $state=false; foreach ($userids as $valueone) { foreach ($arr as $key => $valuetwo) { if($valuetwo['pid']==$valueone){ $return_arr[]=$valuetwo['id'];//找到我的下级立即添加到最终结果中 $othermids[]=$valuetwo['id'];//将我的下级id保存起来用来下轮循环他的下级 array_splice($arr,$key,1);//从所有会员中删除他 $state=true; } } } $userids=$othermids;//找到的下级集合,下次循环 } while ($state==true); return $return_arr; }
PHP