为什么在下一次迭代中不会更改临时指定值

问题描述 投票:1回答:1

我面临以下代码的一些奇怪问题:

for($i=0;$i<count($job1);$i++){
    for($j=0;$j<count($jobidcomm);$j++){
        if(!$jobidcomm->isEmpty() && $job1[$i]->job_pos_id==$jobidcomm[$j]->job_id){
            $job[$i]=$job1[$i]; 
            break;
        } 
        else if (!$recruiter==null)
        {
            if(!$job1[$i]->commission_percentage==null){
                $newamt=(($job1[$i]->min_sal*$job1[$i]->commission_percentage)/100)*($recruiter/100);
            }
            else{
                $newamt=($job1[$i]->commission_flat_amt)*($recruiter/100);
            }
            $job1[$i]->commissionHalfAmt=$newamt; //here is i m having problem(this is temprory assign data)
            $job[$i]=$job1[$i]; 
        }
    }
}

假设在j=0它执行$recruiter条件,我指定一个临时值,但当j变为1(即j=1),然后它进入这个

if(!$jobidcomm->isEmpty() && $job1[$i]->job_pos_id==$jobidcomm[$j]->job_id)

以上条件,在这种情况下,我想重置原来的job1(就像之前没有临时分配数据)

php laravel
1个回答
1
投票

在内部循环之前将旧值保存在变量中。

for($i=0;$i<count($job1);$i++){
    $saveCommission = $job1[$i]->commissionHalfAmt;
    for($j=0;$j<count($jobidcomm);$j++){
        if(!$jobidcomm->isEmpty() && $job1[$i]->job_pos_id==$jobidcomm[$j]->job_id){
            $job[$i]=$job1[$i]; 
            break;
        } 
        else if (!$recruiter==null)
        {
            if(!$job1[$i]->commission_percentage==null){
                $newamt=(($job1[$i]->min_sal*$job1[$i]->commission_percentage)/100)*($recruiter/100);
            }
            else{
                $newamt=($job1[$i]->commission_flat_amt)*($recruiter/100);
            }
            $job1[$i]->commissionHalfAmt=$newamt; //here is i m having problem(this is temprory assign data)
            $job[$i]=$job1[$i]; 
        }
    }
    $job1[$i]->commissionHalfAmt = $saveCommission;
}

顺便说一句,你应该学习在循环数组元素时使用foreach()

© www.soinside.com 2019 - 2024. All rights reserved.