欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP递归统计上下级

程序员文章站 2024-03-21 13:32:40
...

PHP递归统计上级

场景

1.由于项目需要类似于分销,需要统计所有上级,并且的到上级id号(member_id),上下级关系是通过字段(p_id) 建立上下级关系. 上级无级,之前最多是三级分销,通过mysql一级一级的查找。对于无限级,则用一个递归函数来统计。

递归函数

// An highlighted block

class memberLimitLogic{
    static $ShareholdersMember = [];  //静态变量用于存放member_id
    //递归函数
    private function ShareholdersMember($member_id){ 		//传入初始ID
        if(empty($member_id)){
            return self::$ShareholdersMember;				//如果为空就返回
        }
        $mWhere  = array(									//查询条件条件
            'member_id' => array('eq',$member_id)
        );
		//框架封装好的mysql 查寻语句。表名为 member 表, where条件为 $mWhere,查询内容为 member_id,p1_id(上级ID),level(为用户等级)
        $member_list = Model()->table('member')->where($mWhere)->field('member_id,p1_id,level')->find();
        if($member_list){									//判断上级是否存在
            $member_id =$member_list['p1_id'];
				  self::$ShareholdersMember[] = $member_list['member_id']; 	//把member_id存入数组(这里包括自己的ID,所以在传入初始ID的时候最好传入初始ID的上级ID(p1_id))
              //  if($member_list['level']==4){
             //       self::$ShareholdersMember[] = $member_list['member_id'];
              //  }
            $this->ShareholdersMember($member_id);		//继续执行本函数
        }else{
            return self::$ShareholdersMember;
        }
    }
}
//下级同理,只需修改查询条件即可

   $mWhere  = array(									//查询条件条件
            'p1_id' => array('eq',$member_id)
        );