在不使用資料庫的情況下,對純 PHP 陣列進行分頁是常見需求。本文示範如何結合 array_slice 與 ceil 實現簡潔高效的陣列分頁。
$arr_click = [
['clicks' => 3, 'clickDate' => '2010-10-11'],
['clicks' => 2, 'clickDate' => '2010-10-10'],
// ... 更多資料
];
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$size = 3; // 每頁筆數
$pnum = ceil(count($arr_click) / $size); // 總頁數
// 切片取得當頁資料
$newarr = array_slice($arr_click, ($page - 1) * $size, $size);
foreach ($newarr as $item) {
echo $item['clickDate'] . '<br/>';
}
// 上一頁
if ($page <= 1) {
echo '<a href="?page=1">上一頁</a>';
} else {
echo '<a href="?page=' . ($page - 1) . '">上一頁</a>';
}
// 下一頁
if ($page >= $pnum) {
echo '<a href="?page=' . $pnum . '">下一頁</a>';
} else {
echo '<a href="?page=' . ($page + 1) . '">下一頁</a>';
}
max(1, min($page, $pnum)) 修正非法頁碼靜態配置陣列、API 回傳資料集、快取資料分頁等無需資料庫查詢的場合。