phpfor
我是PHP新手,最近開發項目求二叉樹體系的福利獎。寫完後執行效率太低。求高手大神指點一下思路。
1.左右業績達到1W就是主管。 管理體系下有2個主管就是經理。管理體系下有2個經理就是董事。 0會員,1主管,2經理,3董事。
我寫的代碼如下:
//福利獎開始
unset($map);//銷毀map變數值
$map['_string']=" datediff(curday,'".$beginday."')<=0";
//查詢所有會員業績
$hyyjlist=$hyyj->where($map)->field(' userid,sum(leftyj1)+sum(leftyj2) as sumleft')->group('userid')->select();
$glrCountArry=array();//key:主管name+flrjl value:人數 儲存主管人數的 數組
foreach ($hyyjlist as $hkey=>$hvalue){//迴圈更新使用者的主管福利
if($hvalue['sumleft']>=10000){
$us=$userListArry[$hvalue['userid']];//3根據ID獲得會員
if($us['flstate']==0){//狀態是0 會員
if($salary1->where(array('periods'=>$periods,'userid'=>$us['id']))->setField(array('flj'=>'z主管獎內容z'))===false){
$salary->rollback();
$this->error('福利獎更新失敗');
}
for(!empty($us['gluser']),$i=0;$i if(!array_key_exists($us['gluser']."flrzg", $glrCountArry)){
$glrCountArry[$us['gluser']."flrzg"]=1;
}else{
$glrCountArry[$us['gluser']."flrzg"]+=1;
}
$us=$userNameListArry[$us['gluser']];
if(empty($us)){
$i=count($userlist);
}
}
}
}
}
$find['state']=array('eq',1);//狀態=1啟用
$find['_string']="from_unixtime(confirmtime,'%Y-%m-%d') $list2=$users->where($find)->select();//查詢會員列表
$glrCountArry2=array();// key:經理name+flrjl value:人數 儲存經理人數的 數組
foreach ($list2 as $key=>$value){//獲得經理福利
$us=$value;
if($us['flstate']==1){
for(!empty($us['gluser']),$i=0;$i if($glrCountArry[$us['username']."flrzg"]>0){//會員是主管層級,主管數組的人數大於0 更新會員的經理福利
if($salary1->where(array('periods'=>$periods,'userid'=>$us['id']))->setField(array('flj'=>'z經理獎內容z'))===false){
$salary->rollback();
$this->error('福利獎更新失敗2');
}
}
if(!array_key_exists($us['gluser']."flrjl", $glrCountArry2)){//使會員的上層經理+1
$glrCountArry2[$us['gluser']."flrjl"]=1;
}else{
$glrCountArry2[$us['gluser']."flrjl"]+=1;
}
$us=$userNameListArry[$us['gluser']];
if(empty($us)){
$i=count($userlist);
}
}
}else if($value['flstate']==0){//會員等級不是主管,主管數組的人數大於1 更新會員的經理福利
for(!empty($us['gluser']),$i=0;$i if($glrCountArry[$us['username']."flrzg"]>1){//會員是主管層級,主管數組的人數大於0 更新會員的經理福利
if($salary1->where(array('periods'=>$periods,'userid'=>$us['id']))->setField(array('flj'=>'z經理獎內容z'))===false){
$salary->rollback();
$this->error('福利獎更新失敗2');
}
}
if(!array_key_exists($us['gluser']."flrjl", $glrCountArry2)){//使會員的上層經理+1
$glrCountArry2[$us['gluser']."flrjl"]=1;
}else{
$glrCountArry2[$us['gluser']."flrjl"]+=1;
}
$us=$userNameListArry[$us['gluser']];
if(empty($us)){
$i=count($userlist);
}
}
} } foreach ($list2 as $key=>$value){//獲得董事福利 $us=$value; if($us['flstate']==2){//狀態為2經理 for(!empty($us['gluser']),$i=0;$i0){//會員是經理層級,經理數組的人數大於0 更新會員的董事福利 if($salary1->where(array('periods'=>$periods,'userid'=>$us['id']))->setField(array('flj'=>'z董事獎內容z'))===false){ $salary->rollback(); $this->error('福利獎更新失敗3'); } } $us=$userNameListArry[$us['gluser']]; if(empty($us)){ $i=count($userlist); } } }else if($value['flstate']<2){//狀態不是經理的,只要經理數組的人數達到2個更新會員的董事福利 for(!empty($us['gluser']),$i=0;$i1){//會員是經理層級,經理數組的人數大於1 更新會員的董事福利 if($salary1->where(array('periods'=>$periods,'userid'=>$us['id']))->setField(array('flj'=>'z董事獎內容z'))===false){ $salary->rollback(); $this->error('福利獎更新失敗3'); } } $us=$userNameListArry[$us['gluser']]; if(empty($us)){ $i=count($userlist); } } } } //福利獎結束