首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 陣列分頁另一種實作:預設資料結構與手動導航完整範例

     編輯:PHP 相關知識

資料結構範例

<?php
$arr_click = [
    ['clicks' => 3, 'clickDate' => '2010-10-11'],
    ['clicks' => 2, 'clickDate' => '2010-10-10'],
    ['clicks' => 3, 'clickDate' => '2010-10-09'],
    ['clicks' => 4, 'clickDate' => '2010-10-08'],
    ['clicks' => 5, 'clickDate' => '2010-10-13'],
    ['clicks' => 7, 'clickDate' => '2010-10-14'],
    ['clicks' => 6, 'clickDate' => '2010-10-15'],
    ['clicks' => 9, 'clickDate' => '2010-10-16'],
];

分頁邏輯實作

<?php
$page = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;
$pageSize = 3;

$totalPages = ceil(count($arr_click) / $pageSize);
$page = min($page, $totalPages);

$offset = ($page - 1) * $pageSize;
$pageData = array_slice($arr_click, $offset, $pageSize);

// 顯示當前頁資料
foreach ($pageData as $row) {
    echo $row['clickDate'] . "<br/>";
}

// 分頁導航
echo "<br>";
// 上一頁
if ($page <= 1) {
    echo "<a href='?page=1'>上一頁</a> ";
} else {
    echo "<a href='?page=" . ($page - 1) . "'>上一頁</a> ";
}

// 頁碼 (可選擇只顯示附近頁碼)
for ($i = 1; $i <= $totalPages; $i++) {
    $style = ($i === $page) ? "style='color:red;'" : '';
    echo "<a href='?page=$i' $style>$i</a> ";
}

// 下一頁
if ($page >= $totalPages) {
    echo "<a href='?page=$totalPages'>下一頁</a>";
} else {
    echo "<a href='?page=" . ($page + 1) . "'>下一頁</a>";
}
?>

關鍵差異點

  • 資料為關聯陣列而非單純值陣列
  • 手動處理首頁/末頁邊界條件
  • 頁碼連結包含完整查詢字串

通用化建議

參考前文 ArrayPaginator 類別封裝,支援任意陣列結構、自訂顯示回調、Bootstrap 風格分頁 HTML 輸出。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved