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)
);
上一篇: ibatis文档
下一篇: 不带头结点的链表的建立和打印