因项目需要需要统计用户无限下级计算分销佣金,计算每月分红,计算无限下级团队的业绩,需要先获得某个会员的无限下级成员。先看看数据库中的member表字段

id            username              agentid(上级id)

1               张三                         0

2               李四                         1

3               李四                         2

4               王五                         3

5               马六                         4

.......................

1.递归模式(因为PHP在递归方面限制层级厉害,无限下级不建议采用)private  $members;//保存二级分享所有团队人员

/*

* 计算某个用户无限下级.

* 返回的数据并不包含用户自身.

* $mid为某用户的id

*/

public  function  GetTeamMember($mid){

$Tempmerbers=pdo_fetchall("select id,openid from ". tablename('ewei_shop_member')." where agentid=".$mid);//查询id为mid的用户的直接下级

$this->members=array_merge($this->members,$Tempmerbers);//查询结果保存到私有属性members中

if(count($Tempmerbers)>0){//再将上面查询到的直接下级递归查询下级

foreach ($Tempmerbers as $value) {

$this->GetTeamMember($value['id']);

}

}

}

2.非递归模式//1.整个会员表的数据

$member = array(

array('id'=>1, 'agentid'=>0, 'nickname' => 'A'),

array('id'=>2, 'agentid'=>1, 'nickname' => 'B'),

array('id'=>3, 'agentid'=>1, 'nickname' => 'C'),

array('id'=>4, 'agentid'=>8, 'nickname' => 'D'),

array('id'=>5, 'agentid'=>3, 'nickname' => 'E'),

array('id'=>6, 'agentid'=>3, 'nickname' => 'F'),

array('id'=>7, 'agentid'=>3, 'nickname' => 'G'),

array('id'=>8, 'agentid'=>8, 'nickname' => 'H')

);

/*

*2.获取某个会员的无限下级方法

*$members是所有会员数据表,$mid是用户的id

*/

function GetTeamMember($members, $mid) {

$Teams=array();//最终结果

$mids=array($mid);//第一次执行时候的用户id

do {

$othermids=array();

$state=false;

foreach ($mids as $valueone) {

foreach ($members as $key => $valuetwo) {

if($valuetwo['agentid']==$valueone){

$Teams[]=$valuetwo['id'];//找到我的下级立即添加到最终结果中

$othermids[]=$valuetwo['id'];//将我的下级id保存起来用来下轮循环他的下级

array_splice($members,$key,1);//从所有会员中删除他

$state=true;

}

}

}

$mids=$othermids;//foreach中找到的我的下级集合,用来下次循环

} while ($state==true);

return $Teams;

}

$res=GetTeamMember($member ,1);

var_dump($res);

php 无限查找下级业绩_php无限查询下级,php递归统计下级总数,php 获取无限子级...相关推荐

  1. php 无限查找下级业绩_PHP 面试踩过的坑

    因为最近需要面试,所以特意整理了一下面试所经历的一些面试题.分享一下,希望对自己有用,也对其他人有用.尚未有答案的,后面会陆续更新,如果有补充答案的,也十分感激. 1.get,post 的区别 **显 ...

  2. php 无限查找下级业绩_php如何查找会员无限分类的所有上级和所有下级

    a推广出的a-1,a-2继续推广,得到a-1-1,a-1-2等等 数据库设计思路如下: 用户表中有一个son这么一个字段,这个字段中存放名下所有会员的id,用分号隔开. 这个字段的维护: 比如a-1- ...

  3. SQL server 根据子级查询根父级

    小编做惯了根据父级查子级,可是怎么也没想到有一天会遇到根据子级查根父级这种需求,小编起初想通过C#,但是小编最后并没有做到合适的方法,那小编只能通过SQL server的方式来解决了 推算历程一: w ...

  4. (私人收藏)[开发必备]HTML5最全快速查找离线手册(可查询可学习,带实例)...

    [开发必备]HTML5最全快速查找离线手册(可查询可学习,带实例) HTML5最全快速查找离线手册:https://pan.baidu.com/s/19seE8TJQSx4IsWgXtKQS0A j9 ...

  5. 如何利用谷歌邮箱别名功能获取无限 Gmail 邮箱

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 我们注册有些国外的服务时,是不能用国内邮箱注册的,这时一个 Gmail 邮箱就显得很有必要.而有时候我们会需要注册 ...

  6. Excel VLOOKUP实用教程之 02 vlookup如何双向查找,两个字段查询数据?(教程含数据excel)

    实战需求 vlookup如何双向查找,两个字段查询数据? 文章目录 <示例 1 – 查找 Brad 的数学分数> <示例 2 – 双向查找> <示例 3 – 使用下拉列表 ...

  7. sqlserver根据字段查表_查找sqlserver数据库中,查询某值所表名和字段名

    有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,通过一个存储过程实现的.只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名. 前提是要将这个存储过程放在所查询的数据库. CR ...

  8. 范围查找(比如日期范围)下查询出现全表扫描MySQL数据库索引失效

    范围查找(比如日期范围)下查询出现全表扫描MySQL数据库索引失效 当下MySQL数据库在多款数据库中脱颖而出,成为使用最广泛的数据库之一,这里我们来看看数据库索引上的一个问题.我们知道在数据量上去以 ...

  9. Java中使用递归算法实现查找树形结构中所有父级和子级节点

    场景 在企业架构管理中使用树形结构进行管理,如图: 注:如果A的id是B的pid,那么A就是B的父级. 数据库数据如下: 现在需要根据传递的id查询此节点所有的父级节点以及此节点所有的子级节点. 实现 ...

最新文章

  1. 分享一波 ZooKeeper 面试题
  2. PHP中刷新输出缓冲
  3. TensorFlow实战笔记(17)---TFlearn
  4. 阿里云MaxCompute 2019-4月刊
  5. 【响应式Web前端设计】一文学会使用Bootstrap!
  6. java 整数 字节数组_将整数转换为字节数组(Java)
  7. 简单纯文字浮动信息-Tooltip
  8. 使用ffmpeg将BMP图片编码为x264视频文件,将H264视频保存为BMP图片,yuv视频文件保存为图片的代码
  9. android 读取txt转为utf-8乱码,彻底解决android读取txt乱码终极方案
  10. Git学习总结(8)——Git和SVN之间的基本区别
  11. 网页打开摄像头_只要5分钟,快速掌握摄像头课件直播技巧
  12. 一提开发满脸泪,不如尬评来赢书 | 张开涛亲笔签名
  13. 远程访问 Sql Server Express
  14. 速达pro服务器显示试用,速达v3-pro商业版突然变成试用版了,加密狗的灯不亮了,是什么原因- _0...
  15. CentOS cp复制命令覆盖文件不提示 实现直接覆盖
  16. oracle imp 多用户,用imp把一个用户的架构下的数据导入到另一个用户下的问题
  17. CSDN个人博客如何上传图片
  18. (4)ArcGIS 10.2 去除要素的Z值和M值
  19. 【MySQL基础】03:约束与运算符
  20. 初探巨杉分布式数据库

热门文章

  1. python学籍注册小程序
  2. 如何利用python在yi_[宜配屋]听图阁
  3. c99编译报错改用gnu99
  4. 同盾科技产品组件介绍
  5. 解决使用innobackupex备份mysql产生returned OS error 124
  6. 网络请求延迟变大了,我该怎么办?
  7. Matlab自相关/互相关函数xcorr
  8. 如何给linux设置固定ip地址,设置Linux系统的固定IP地址
  9. 怎么设置电脑的固定IP地址
  10. 软考大题做题技巧——数据流图、数据库E-R图、UML、算法、设计模式(干货!)