PHP: цикл для определенных частей итога, а затем отдыха

Я не уверен, сделал ли я это правильно:

У меня есть общее количество элементов, скажем, 624. Я хотел бы сделать цикл, который отправляет 7 запросов, первые 6 на 100 элементов каждый, последний за оставшиеся 24.

Поэтому я немного посчитал, чтобы узнать, сколько циклов мне нужно пройти.

    // this is the total number of items
$total = $result['total_items'];
// if we split the total into such chunks
$chunksize = 50;
// we will get a rest of so many items
$rest = $total % $chunksize;
// so including the query for the rest, we will have to repeat the query so many times
$queries_no = (($total-$rest)/$chunksize)+1;

Выше чувствует себя немного неуклюжим. Это правильный путь?

PS: После этого я могу повторить запрос в нужное время.

    // prep loop
$i = 0;
$requested = 0;
$subscribers = [];

while ($i <= $queries_no){
// last item
if($i == $queries_no){
$chunksize = $rest;
}
$result = $this->monkeyApp->get('lists/'.$list_id.'/members?offset='.$requested.'&count='.$chunksize);
$subscribers = array_merge($subscribers,$result['members']);
$requested = $requested + $chunksize;
$i++;
}

0

Решение

$subscribers = [];

for ($count = $chunksize, $offset = 0; $offset < $total; $offset += $chunksize)
{
if ($offset + $chunksize > $total)
{
$count = $total % $chunksize;
}

$result = $this->monkeyApp->get("lists/$list_id/members?offset=$offset&count=$count");

$subscribers = array_merge($subscribers, $result['members']);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector