php for ループのアイデアの問題
私は PHP の初心者で、最近プロジェクトを開発し、バイナリ ツリー システムの福祉賞を求めました。書き込み後の実行効率が低すぎます。専門家にアドバイスを求めてください。画像の説明
1. 1W 程度のパフォーマンスを持つ人が監督者とみなされます。管理体制の下に管理者である監督者が 2 名います。管理体制の下に取締役である管理者が2名います。メンバー0名、スーパーバイザー1名、マネージャー2名、取締役3名。
私が書いたコードは次のとおりです:
//福祉賞が始まります
unset($map);//マップ変数の値を破棄します
$map['_string']= " datediff(curday ,'".$beginday."')<=0";
//全メンバーのパフォーマンスをクエリ
$hyyjlist=$hyyj->where($map)->field( ' userid,sum (leftyj1) sum(leftyj2) as sumleft')->group('userid')->select();
$glrCountArry=array();//キー: スーパーバイザ名 flrjl 値:人数 スーパーバイザーの数を保存 Array
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
$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);/ /Status=1Activate
$find['_string']="from_unixtime(confirmtime,'%Y-%m-%d')<='".$beginday ."'";//アクティブ化日付帳 期間時間
$list2=$users->where($find)->select();//クエリメンバーリスト
$glrCountArry2=array(); // key: マネージャー名 flrjl value: 人数 マネージャーの数を保存する配列
foreach ($list2 as $key=>$value){//マネージャーの特典を取得
$us=$value;
if($us['flstate']== 1){
for(!empty($us['gluser']),$i=0;$i
if($salary1-> ;where(array('periods'=>$periods,'userid'=>$us['id' ]))->setField(array('flj'=>'zManager Award Contentz') )===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($salary1->where(array('periods'=>$periods,'userid'=>$us['id']))->setField(array ('flj'=>' zManager 賞の内容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){//ステータスis 2 マネージャー
for(!empty($us['gluser']),$i=0;$i
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;$i
if($salary1->where(array('periods'=>$期間,'userid'=>$us['id']))->setField(array('flj'=>'zDirector)賞内容z'))===false){
$salary ->rollback();
$this->error('福利厚生賞の更新に失敗しました 3');
}
}
$us=$userNameListArry[$us['gluser'] ];
if(empty($us)){
$i=count($userlist);
}
}
}
}
//福利厚生賞は終了
-----ソリューションのアイデア-------- --
テーブル構造とは何ですか?これは更新コマンド