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

PHP 使用陣列函式實作分頁功能完整範例

     編輯:PHP 綜合知識

前言

分頁是 Web 應用程式中常見的需求。雖然現代框架都內建分頁元件,但理解如何用原生 PHP 陣列函式實作分頁邏輯,有助於掌握核心運算原理,也能在輕量專案中快速部署。本文提供一個完整、可直接執行的分頁類別範例。

核心分頁函式

/**
 * 陣列分頁函式
 * @param array  $data      待分頁資料陣列
 * @param int    $pageSize  每頁筆數
 * @param int    $current   目前頁碼(從 1 開始)
 * @return array 包含分頁資料與導航 HTML
 */
function paginateArray(array $data, int $pageSize, int $current = 1): array
{
    $totalItems = count($data);
    $totalPages = (int) ceil($totalItems / $pageSize);

    // 修正頁碼範圍
    $current = max(1, min($current, $totalPages));

    // 計算資料切片範圍
    $offset = ($current - 1) * $pageSize;
    $pagedData = array_slice($data, $offset, $pageSize);

    // 產生上一頁、下一頁頁碼
    $prevPage = max(1, $current - 1);
    $nextPage = min($totalPages, $current + 1);

    // 組裝導航連結
    $navLinks = sprintf(
        '<a href="?page=1">首頁</a> <a href="?page=%d">上一頁</a> <a href="?page=%d">下一頁</a> <a href="?page=%d">末頁</a>',
        $prevPage, $nextPage, $totalPages
    );

    return [
        'data'     => $pagedData,
        'current'  => $current,
        'total'    => $totalPages,
        'nav_html' => $navLinks,
    ];
}

使用範例

// 模擬資料來源
$items = range(1, 20); // 1~20 共 20 筆

// 取得目前頁碼(預設第 1 頁)
$page = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;

// 呼叫分頁函式
$result = paginateArray($items, 5, $page);

// 輸出當頁資料
echo "第 {$result['current']} 頁 / 共 {$result['total']} 頁
"; foreach ($result['data'] as $item) { echo "項目:$item
"; } // 輸出分頁導航 echo $result['nav_html'];

關鍵邏輯說明

步驟說明
總頁數計算ceil(count($data) / $pageSize) 向上取整
頁碼修正確保 $current 在 1~總頁數區間內
資料切片使用 array_slice() 依 offset 與 length 擷取
導航產生動態計算首頁、上一頁、下一頁、末頁連結

進階擴充建議

  • 加入「每頁筆數」下拉選單,讓使用者自訂 $pageSize。
  • 產生頁碼清單(如 1 2 3 ... 10),而非僅有上下頁。
  • 結合 URL 重寫,產生友善網址(如 /page/3)。
  • 針對大量資料,改用資料庫 LIMIT/OFFSET 或游標分頁,避免一次載入全部陣列。

此範例展示了分頁的核心數學與陣列操作,理解後可靈活套用於各種資料來源。

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