Php 因为循环的行为不符合预期,我做错了什么? $emails=array()//这是一个4600封电子邮件的数组,我正在为每1000封电子邮件生成一个批处理范围 $batch=ceil(计数($email)/1000);//我得到了多少批次,我需要得到 $lowe=0//较低的初始化范围 $upper=$lowe+999//初始化的上限范围 对于($i=0;$ilowe,'upper'=>upper]; } 报税表($ss);//响应是[{“较低”:0,“较高”:999},{“较低”:1000,“较高”:1999},{“较低”:2000,**“较高”:3999},{“较低”:4000,“较高”:7999},{“较低”:8000,“较高”:15999}]** //然而,我期望[{“较低”:0,“较高”:999},{“较低”:1000,“较高”:1999},{“较低”:2000,“较高”:2999},{“较低”:3000,“较高”:3999},{“较低”:4000,“较高”:4999}]
将循环中$upper的赋值更改为常量值Php 因为循环的行为不符合预期,我做错了什么? $emails=array()//这是一个4600封电子邮件的数组,我正在为每1000封电子邮件生成一个批处理范围 $batch=ceil(计数($email)/1000);//我得到了多少批次,我需要得到 $lowe=0//较低的初始化范围 $upper=$lowe+999//初始化的上限范围 对于($i=0;$ilowe,'upper'=>upper]; } 报税表($ss);//响应是[{“较低”:0,“较高”:999},{“较低”:1000,“较高”:1999},{“较低”:2000,**“较高”:3999},{“较低”:4000,“较高”:7999},{“较低”:8000,“较高”:15999}]** //然而,我期望[{“较低”:0,“较高”:999},{“较低”:1000,“较高”:1999},{“较低”:2000,“较高”:2999},{“较低”:3000,“较高”:3999},{“较低”:4000,“较高”:4999}],php,loops,for-loop,Php,Loops,For Loop,将循环中$upper的赋值更改为常量值 $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 initi
$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}]
for($i=0;$i<$batch;$i++){
如果($i!=0){
$lowe=$upper+1;
$upper+=999;
}
$ss[]=['lower'=>lowe,'upper'=>upper];
}
将循环中$upper的赋值更改为常量值
$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}]
for($i=0;$i<$batch;$i++){
如果($i!=0){
$lowe=$upper+1;
$upper+=999;
}
$ss[]=['lower'=>lowe,'upper'=>upper];
}
要澄清你做错了什么:
在循环中,$lowe
的值不断增加-因此当您执行$upper=$upper+$lowe
,旧值$upper
与新值之间的差值也会增大
您的目标是将
$upper
值不断增加1000,这就是为什么您必须替换$upper=$upper+$lowe使用$upper+=1000
进行代码>以澄清您的错误:
在循环中,$lowe
的值不断增加-因此当您执行$upper=$upper+$lowe
,旧值$upper
与新值之间的差值也会增大
您的目标是将$upper
值不断增加1000,这就是为什么您必须替换$upper=$upper+$lowe
如果$upper+=1000
它实际上应该是$upper+=1000代码>,而不是$upper+=999代码>谢谢。节省了我调试的时间。它实际上应该是$upper+=1000代码>,而不是$upper+=999代码>谢谢。节省了我几个小时的调试时间。是的,这解决了问题。谢谢你。我还发现替换$upper=$upper+$lowe;带$upper=$lowe+999;也解决了问题。是的,这解决了问题。谢谢你。我还发现替换$upper=$upper+$lowe;带$upper=$lowe+999;这也解决了问题。