php - 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}]
解决方案
为了澄清你做错了什么:
在循环$lowe
中,值不断增加 - 所以当你这样做时$upper = $upper+$lowe;
,旧值和新值之间的差异$upper
也会增加。
您的目标是使您的$upper
价值不断增加 1000,这就是为什么您必须替换$upper = $upper+$lowe;
为$upper += 1000
推荐阅读
- python - Django send_mail 使用 RequestFactory 给出 NoneType 错误,但在视图之外运行代码时没有(包括测试代码)
- mongodb - 在 MongoDB 中创建应用程序用户的约定是什么?
- c - 使用 process_vm_readv 读取任意数量的内存
- php - 从 PHPMyAdmin 但不是从 TextArea 提交 MySQL 查询
- ruby-on-rails - Rails 5:从另一个控制器访问创建方法
- android - 字段“签名”的值不正确:值为 662655099,但应为 67324752
- glib - 如何使用 vala/glib 通过管道传输到进程
- php - 在哪里存储 docker-php-ext 文件?
- node.js - 从云功能流式传输 zip 下载
- git - 尝试运行“颤振升级”时出错