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