当前位置: 首页 PHP

PHP查询无限上下级

栏目:PHP 作者:xiaofan 时间:2024-09-02 14:54:18

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



阅读:180次

分类栏目