分页api请求,如何知道是否还有其他页面?

The*_*tor 8 php api pagination

我正在创建一个使用第三方API的PHP类.API有一个具有此请求URL结构的方法:

https://api.domain.com/path/sales?page=x
Run Code Online (Sandbox Code Playgroud)

其中"x"是页码.

每个页面返回50个销售额,我需要为每个用户返回一个未定义的页数(取决于用户销售额)并存储每个销售的一些数据.

我已经创建了一些从URL获取数据的方法,解码并创建一个包含所需数据的新数组,但仅限于第一页请求.

现在我想创建一个方法来检查是否有另一个页面,如果有,请获取它并再次进行检查

如何检查是否有其他页面?如果有另一个页面,如何创建一个循环?

我已经有了这个代码,但它创建了一个无限循环.

require('classes/class.example_api.php');
$my_class = new Example_API;
$page = 1;
$sales_url = $my_class->sales_url( $page );
$url = $my_class->get_data($sales_url);

while ( !empty($url) ) {
    $page++;
    $sales_url = $my_class->sales_url( $page );
    $url = $my_class->get_data($sales_url);
}
Run Code Online (Sandbox Code Playgroud)

我不使用CURL,我用file_get_content.当我请求页面超出范围时,我得到以下结果:

string(2) "[]"
Run Code Online (Sandbox Code Playgroud)

而另一个之后json_decode:

array(0) { }
Run Code Online (Sandbox Code Playgroud)

小智 2

根据您的输入,在 while 循环中,您更改 $url (实际上保存 API 调用返回的数据),如果我是正确的,则会检查它是否为空。

$url = $my_class->get_data($sales_url);
Run Code Online (Sandbox Code Playgroud)

如果上面只是原始响应(因此,如果页面超出字符串“[]”范围),则它永远不会将empty(“[]”)变为true。所以我的猜测是 get_data 的返回值是这个字符串,而即使结果为空,它也应该是实际的数组/json(即我怀疑一旦收集了数据(例如在循环之外),就执行 json_decode )。

如果是这种情况,我的建议是在循环中检查“[]”(例如 while ($url !== "[]"))或在循环中解码响应数据($url = json_decode( $网址))。