<?php //参考别人 //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 //print_r($mids); do { $othermids=array(); $state=false; foreach ($mids as $valueone) { foreach ($members as $key => $valuetwo) { if($valuetwo['agentid']==$valueone){ //$Teams[]=$valuetwo['id'];//找到个人下级当即添加到最终结果中 一维数组 $Teams[] = array( 'id' => $valuetwo['id'], 'name' => $valuetwo['nickname'] ); //二维数组 $othermids['id']=$valuetwo['id'];//将个人下级id保存起来用来下轮循环他的下级 array_splice($members,$key,1);//从全部会员中删除他 $state=true; } } } $mids=$othermids;//foreach中找到的个人下级集合,用来下次循环 } while ($state==true); return $Teams; } $res=GetTeamMember($member ,1); print_r($res);