首页 > 解决方案 > For循环没有按预期运行,我做错了什么?

问题描述

$emails =array() // This is an array of 4600 emails of which i am generating a batch range for each 1000 emails 

$batch= ceil(count($emails)/1000);  // i am getting how many batches i need to get

$lowe=0; //lower range for initialization

$upper=$lowe+999; //upper range for initialization


for ($i=0; $i < $batch; $i++) { 
            if ($i!=0) {
           $lowe=$upper+1;
           $upper=  $upper+$lowe;
     }

$ss[]=['lower'=>$lowe,'upper'=>$upper];

    }

return ($ss);  // response is [{"lower":0,"upper":999},{"lower":1000,"upper":1999},{"lower":2000,**"upper":3999},{"lower":4000,"upper":7999},{"lower":8000,"upper":15999}]**

// yet i expect [{"lower":0,"upper":999},{"lower":1000,"upper":1999},{"lower":2000,"upper":2999},{"lower":3000,"upper":3999},{"lower":4000,"upper":4999}]

标签: phploopsfor-loop

解决方案


为了澄清你做错了什么:

在循环$lowe中,值不断增加 - 所以当你这样做时$upper = $upper+$lowe;,旧值和新值之间的差异$upper也会增加。

您的目标是使您的$upper价值不断增加 1000,这就是为什么您必须替换$upper = $upper+$lowe;$upper += 1000


推荐阅读