php 高效、非遞迴迴圈所有下級,並將結果存為一維陣列
阿新 • • 發佈:2018-12-01
1.取出所有資料
public function teammember($id){
$next = pdo_fetchall("select id,openid,agentid from ".tablename("ewei_shop_member")." where agentid > 0");
$res = $this->GetTeamMember($next,$id);//呼叫
return $res;
}
2.根據父id查詢(do ……while)
public 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['openid']."'";//找到我的下級立即新增到最終結果中
$othermids[]=$valuetwo['id'];//將我的下級id儲存起來用來下輪迴圈他的下級
//var_dump($othermids);
// array_splice($members,$key,1);//從所有會員中刪除他
$state=true;
}
}
}
$mids=$othermids;//foreach中找到的我的下級集合,用來下次迴圈
} while ($state==true);
return $Teams;
}