我将如何遍历此 API 数据
How would I loop through this API data
我有一个 API 我要从中请求数据。
问题是我不想强调我的应用程序,因为数据集可能包含数万个对象。
返回数据的方式是这样的,我可以在其中指定页面限制和偏移量,例如 limit=10 和 offset=10:
"objects": {
"object",
"object2",
//and so on....
}
"hasMore": true,
"count": 23123,
计数 属性 包含对象的总数,如果有更多对象要获取,则 hasMore 等于 true,如果没有剩余对象,则为 false。
如果 hasMore 等于 true,我的假设是我需要发出一个新请求,其偏移量等于我的页面大小的两倍,直到 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));
}
应该可以
$products = json_decode($products, true)
foreach ($products["objects"] as $object) {
echo $object;
}
同意@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++;
}
我有一个 API 我要从中请求数据。
问题是我不想强调我的应用程序,因为数据集可能包含数万个对象。
返回数据的方式是这样的,我可以在其中指定页面限制和偏移量,例如 limit=10 和 offset=10:
"objects": {
"object",
"object2",
//and so on....
}
"hasMore": true,
"count": 23123,
计数 属性 包含对象的总数,如果有更多对象要获取,则 hasMore 等于 true,如果没有剩余对象,则为 false。
如果 hasMore 等于 true,我的假设是我需要发出一个新请求,其偏移量等于我的页面大小的两倍,直到 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));
}
应该可以
$products = json_decode($products, true)
foreach ($products["objects"] as $object) {
echo $object;
}
同意@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++;
}