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

时间:2017-12-18 19:07:54

标签: php laravel

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

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(就像之前没有临时分配的数据一样)

1 个答案:

答案 0 :(得分: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()