PHP автоматически перебирает разбивку на страницы

#php

#php

Вопрос:

У меня есть следующий PHP-код и функция, с помощью которых я вызываю URL API и возвращаю данные в виде массива, используя json_decode. Проблема в том, что возвращаемые данные разбиваются на страницы. Таким образом, в результате страницы я получаю ключ массива с именем nextPageID. Поэтому, когда я выполняю вызов с помощью функции, я могу получить только первый набор данных с первой страницы. Есть ли способ для меня выполнять функцию до тех пор, пока параметр nextPageID больше не будет определен?

 $getData = getData("https://api.url/api?key=xyz");
$next_pageid = $getData['nextPageID'];

echo "<pre>";
print_r($getData);
echo "</pre>";


function getData($url){
    $json = file_get_contents($url);
    return json_decode($json,true);
}
  

Комментарии:

1. Вы смотрели документацию по API?

2. Как насчет проверки этого параметра и запуска другого вызова API?

3. «Есть ли способ» — Да. Что вы пробовали и где вы застряли? Я полагаю, что на высоком уровне вашими шагами было бы десериализовать ответ в объект и изучить его. Если это указывает на то, что доступно больше результатов, сделайте другой запрос, десериализуйте его и объедините его данные с имеющимися у вас данными.

4. Просто окружите свой код (не функцию) циклом while: do { ....<your code> ....} while (isset($getData['nextPageID'])); И, конечно, используйте следующий индекс.

Ответ №1:

Вам нужно использовать функцию рекурсионного вызова в функции. На примере:

 $api_url = "https://api.url/api?key=xyz";
function getData($api){
    $json = file_get_contents($api);
    $array = json_decode($json);
    //This is ok ONLY if on last page nextPageID = null and for get next page you need to use parametr nextPageID in GET
    if(isset($array['nextPageID']) amp;amp; $array['nextPageID'] !== null){
        $array .= array_merge($array,(getData($api."amp;nextPageID=".$array['nextPageID']));
    }
    return $array;
}
print_r (getData($api_url));