Поскольку l oop ведет себя не так, как ожидалось, что я делаю не так? - PullRequest
0 голосов
/ 09 января 2020
$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}]

Ответы [ 2 ]

1 голос
/ 09 января 2020

Чтобы уточнить, что вы делаете неправильно:

в l oop, $lowe продолжает увеличиваться в значении - поэтому, когда вы делаете $upper = $upper+$lowe;, разница между старым значением $upper и новое значение также увеличивается.

То, к чему вы стремитесь, это постоянное увеличение на 1000 для вашего значения $upper, поэтому вы должны заменить $upper = $upper+$lowe; на $upper += 1000

1 голос
/ 09 января 2020

Измените присвоение $ upper в l oop на постоянное значение

for ($i=0; $i < $batch; $i++) { 
    if ($i != 0) {
        $lowe = $upper + 1;
        $upper += 999;
    }
    $ss[]=['lower'=>$lowe,'upper'=>$upper];
}
...