PHP API 偏移分页
PHP API offset Pagination
我有以下代码,但我不确定如何使用相同的函数循环来循环和偏移记录以获取接下来的 20 条记录。
第一次调用时游戏 ID 为零,第二次调用时游戏 ID 为 21。
$result = new ArrayObject();
$count = 0;
foreach($response as &$game) {
$game = get_object_vars($game);
if ($game['gameType'] == $gametype )
{
$result->append(array($game['gameName'], $game['gameType']));
if ($count == $gameid+19) break;
$count ++ ;
}
}
谢谢
我认为你应该使用页面大小和页面索引的概念。
在您的情况下,您似乎希望页面大小为 20。使用 gameid
发送第二个请求意味着您需要页面大小 20 和页面索引 1(而不是 0)。
所以考虑这样的代码:
$count = 0;
$pageSize = 20; // this can be const or come as param
$pageIndex = 0; // this should be as params
foreach($response as &$game) {
$game = get_object_vars($game);
if ($game['gameType'] == $gametype ) {
$count++ ;
if ($count > ($pageSize * $pageIndex))
$result->append(array($game['gameName'], $game['gameType']));
// if you over the request chunk break
if ($count > ($pageSize * ($pageIndex + 1)) break;
}
}
我有以下代码,但我不确定如何使用相同的函数循环来循环和偏移记录以获取接下来的 20 条记录。
第一次调用时游戏 ID 为零,第二次调用时游戏 ID 为 21。
$result = new ArrayObject();
$count = 0;
foreach($response as &$game) {
$game = get_object_vars($game);
if ($game['gameType'] == $gametype )
{
$result->append(array($game['gameName'], $game['gameType']));
if ($count == $gameid+19) break;
$count ++ ;
}
}
谢谢
我认为你应该使用页面大小和页面索引的概念。
在您的情况下,您似乎希望页面大小为 20。使用 gameid
发送第二个请求意味着您需要页面大小 20 和页面索引 1(而不是 0)。
所以考虑这样的代码:
$count = 0;
$pageSize = 20; // this can be const or come as param
$pageIndex = 0; // this should be as params
foreach($response as &$game) {
$game = get_object_vars($game);
if ($game['gameType'] == $gametype ) {
$count++ ;
if ($count > ($pageSize * $pageIndex))
$result->append(array($game['gameName'], $game['gameType']));
// if you over the request chunk break
if ($count > ($pageSize * ($pageIndex + 1)) break;
}
}