我有一个向其请求数据的API。
问题是我不想强调应用程序,因为数据集可以包含成千上万个对象。
返回数据的方式就像这样,我可以指定页面限制和偏移量,例如limit = 10和offset = 10:
"objects": {
"object",
"object2",
//and so on....
}
"hasMore": true,
"count": 23123,
count属性保存对象的总数,如果有更多要提取的对象,则hasMore等于true;如果没有对象,则hasFalse等于false。
如果hasMore等于true,我的假设是我需要发出一个偏移量等于页面大小两倍的新请求,直到hasMore等于false,对吧?
我已经尝试过类似的方法,但是由于我只剩下hasMore等于false和total count的几乎为空的对象,所以没有任何工作
$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));
}
答案 0 :(得分:1)
应该工作
$products = json_decode($products, true)
foreach ($products["objects"] as $object) {
echo $object;
}
答案 1 :(得分: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++;
}