我面临以下代码的一些奇怪问题:
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
(就像之前没有临时分配的数据一样)
答案 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()
。