Я только что наткнулся на эту проблему и хотел уточнить некоторые вещи для пользователей, новых для python, исходящих из фона javascript.
В javascript a.reverse () меняет местами и также возвращает массив, когда
Javascript:
var a = [2, 3 ,4]
console.log(a.reverse())
// outputs [4, 3, 2]
В python a.reverse () меняет место на место, но не возвращает массив. Вот что вызвало путаницу для меня.
В python:
a = [2, 3, 4]
a.reverse()
print(a)
# outputs [4, 3, 2]
# can't do print(a.reverse())
Итак, вы на самом деле вызываете API снова, вы просто не итерации по результатам.
$shouldProcess = true;
$searchIndex = 0;
$items = [];
while ($shouldProcess) {
$processedThisLoop = 0;
$function_call = getPROsitemapsEntries($searchIndex);
$responseData = json_decode($function_call->getBody(), true);
foreach($responseData['result']['entries'] as $entries) {
$items[] = $entries;
$searchIndex++;
$processedThisLoop++;
}
if($processedThisLoop == 0) {
// Didn't find any so stop the loop
$shouldProcess = false;
}
}
var_dump($items);
В приведенном выше коде мы отслеживаем общее количество записей, которые мы обработали в $searchIndex
. Это позволит нам продолжать получать новые элементы вместо старых.
$shouldProcess
- это bool
, который будет определять, следует ли нам пытаться получить новые записи из API.
$items
- это массив, в котором будут храниться все записи из API.
$processedThisLoop
содержит количество записей, которые мы обработали в этом цикле, т. е. этот запрос к API имел записи для обработки? Если это не так, установите $shouldProcess
в false, и это остановит цикл while
.