PHP: цикл для определенных частей итога, а затем отдыха - PullRequest
0 голосов
/ 08 ноября 2018

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

У меня есть общее количество элементов, скажем 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++;
    }

1 Ответ

0 голосов
/ 08 ноября 2018
$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']);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...