Цикл через API со смещениями

Я использую API, который ограничен возвратом 100 элементов в одном запросе — в них реализованы смещения, которые затем должны позволять проходить по нескольким запросам, но я не могу понять, как их объединить.

На данный момент я использую это, которое возвращает 100 элементов и дает мне все данные и т.д., которые мне нужны, но в общей сложности около 2000 элементов, и мне нужно зациклить их все:

try {
$all = RestClient::all(array("limit" => 100));
foreach($all as $entry){
//do something
}

catch(Exception $e) {
print $e;
}

В документации показан пример использования смещения:

$resList = RestClient::all(array('limit'=>100));
echo $resList->nextOffset();
if($resList->nextOffset()) {
$resList = RestClient::all(array("limit" => 100, "offset" => $resList->nextOffset()));
echo $resList->nextOffset();
}

В примере не показано зацикливание, так куда же уходит мой цикл? Мне нужно несколько петель?

Если я добавлю цикл после первого $ resList, то он будет проходить через эти 100, но не более того, хотя я предполагаю, что если я добавлю его в if, то он никогда не будет выполнен, так как смещение никогда не будет определено?

Как я могу использовать смещение для циклического прохождения всех элементов — по сути, объединить оба набора кода?

0

Решение

$offset = 0;
while (true) {
$resList = RestClient::all(array('limit'=>100, , "offset" => $offset));

foreach($resList as $entry) {
// do something
}
if (!$resList->nextOffset()) {
brake;
}
$offset = $resList->nextOffset();
}
1

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

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

По вопросам рекламы [email protected]