在開發網站的過程中,分頁是一個非常常見的功能。無論是展示文章列表、產品清單還是評論數據,分頁都可以有效地提升用戶體驗,並避免一次性加載過多內容對服務器性能造成影響。本文將以PHP 為例,講解如何使用ceil()函數配合count()來實現一個簡單實用的分頁邏輯。
分頁的核心思想是將一大批數據分成若干“頁”,每頁只展示一部分數據。例如,如果我們有100 條記錄,並希望每頁展示10 條,那麼就需要10 頁。
要實現分頁,我們需要以下幾個關鍵變量:
總記錄數:使用count()函數獲取。
每頁顯示的記錄數:可以固定為一個常量或從請求參數中獲取。
當前頁碼:一般從GET 請求中獲取,例如$_GET['page'] 。
總頁數:通過總記錄數除以每頁記錄數,並用ceil()向上取整得到。
假設我們有一組文章數據保存在一個數組中:
<?php
$articles = [
'文章 1',
'文章 2',
'文章 3',
'文章 4',
'文章 5',
'文章 6',
'文章 7',
'文章 8',
'文章 9',
'文章 10',
'文章 11',
'文章 12'
];
$perPage = 5; // 每頁顯示 5 條
$totalItems = count($articles); // 總記錄數
$totalPages = ceil($totalItems / $perPage); // 總頁數
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$page = max(1, min($page, $totalPages)); // 保證頁碼在合理範圍內
$offset = ($page - 1) * $perPage; // 當前頁起始數據位置
$currentItems = array_slice($articles, $offset, $perPage);
foreach ($currentItems as $item) {
echo "<p>$item</p>";
}
?>
為了讓用戶可以點擊跳轉不同頁面,我們需要生成分頁導航鏈接。示例如下:
<?php
echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
if ($i == $page) {
echo "<strong>$i</strong> ";
} else {
echo "<a href=\"https://m66.net/list.php?page=$i\">$i</a> ";
}
}
echo '</div>';
?>
這樣用戶點擊鏈接時就可以跳轉到不同頁碼,而程序會根據頁碼顯示對應的數據內容。
通過count()獲取總數據量,再使用ceil()計算出總頁數,我們就可以實現一個簡單而實用的分頁邏輯。搭配array_slice()和用戶傳入的頁碼參數,PHP 可以高效地處理分頁任務。
這個方法適用於中小規模的數據分頁顯示,對於大規模數據更推薦數據庫層級的LIMIT分頁優化。但無論哪種方式,理解ceil()與count()的結合是掌握分頁的第一步。