我将如何遍历此API数据

问题描述 投票:0回答:2

我有一个API,我正在请求数据。

问题是我不想强调我的应用程序,因为数据集可能包含数万个对象。

返回数据的方式是这样的,我可以指定页面限制和偏移量,如limit = 10和offset = 10:

"objects": {
    "object",
    "object2",
    //and so on....
}
"hasMore": true,
"count": 23123,

count属性保存对象的总量,如果有更多要获取的对象,则hasMore等于true,如果没有剩余对象,则等于false。

如果hasMore等于true,我的假设是我需要创建一个新的请求,其偏移量等于我的pagesize的倍数,直到hasMore等于false,对吧?

我尝试过类似的东西,但没有工作,因为我只剩下一个几乎空的对象,只有hasMore等于false和总数:

 $pageSize = 10;
 $pages = ceil(23123 / $pageSize); // total count of objects
 for ($page = 0; $page <= $pages; $page++) {
    $products = $api->get_products($page * $pageSize, $pageSize);
    var_dump(json_decode($products));
 }
php api pagination limit offset
2个回答
1
投票

同意@ miken32

假设它是$api->getproducts( $offset, $limit ),试试这个:

$pageSize      = 10;
$currentPage   = 0;
$hasmore       = true;

while( $hasmore === true ) {
    $currentOffset = $currentPage * $pageSize;
    $products      = json_decode( $api->get_products( $currentOffset, $pageSize ), true );
    $hasmore       = $products['hasMore'];
    processProducts( $products['objects'] );
    $currentPage++;
}

1
投票

应该管用

$products = json_decode($products, true)

foreach ($products["objects"] as $object) {
    echo $object;
}
© www.soinside.com 2019 - 2024. All rights reserved.