在Web 開發中,分頁是常見的功能之一。無論是展示文章列表、產品目錄還是用戶評論,為了避免一次性加載過多數據導致頁面加載緩慢,分頁都是一種高效的解決方案。
PHP 提供了一個非常實用的函數array_slice() ,它可以方便地從數組中提取出一部分元素。結合這個函數,我們可以輕鬆地實現一個基礎的數組分頁導航功能。本文將帶你一步一步實現它。
array_slice()的基本語法如下:
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$array :原始數組
$offset :開始位置(從0 開始)
$length :可選參數,返回的元素數量
$preserve_keys :是否保留原來的鍵名,默認為false
假設我們有一個包含若干文章標題的數組:
$articles = [
"文章一", "文章二", "文章三", "文章四", "文章五",
"文章六", "文章七", "文章八", "文章九", "文章十"
];
我們希望每頁顯示3 篇文章。
首先,我們需要知道當前是第幾頁,然後根據頁碼計算出對應的偏移量。
<?php
$articles = [
"文章一", "文章二", "文章三", "文章四", "文章五",
"文章六", "文章七", "文章八", "文章九", "文章十"
];
$perPage = 3;
$totalArticles = count($articles);
$totalPages = ceil($totalArticles / $perPage);
// 獲取當前頁碼
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
if ($page < 1) $page = 1;
if ($page > $totalPages) $page = $totalPages;
// 計算當前頁的偏移量
$offset = ($page - 1) * $perPage;
// 使用 array_slice 獲取當前頁的數據
$currentPageArticles = array_slice($articles, $offset, $perPage);
?>
接著,我們將當前頁的數據輸出到頁面中:
<ul>
<?php foreach ($currentPageArticles as $article): ?>
<li><?php echo htmlspecialchars($article); ?></li>
<?php endforeach; ?>
</ul>
我們還需要在頁面底部添加翻頁鏈接:
<div class="pagination">
<?php if ($page > 1): ?>
<a href="https://gitbox.net/pagination.php?page=<?php echo $page - 1; ?>">上一頁</a>
<?php endif; ?>
<?php for ($i = 1; $i <= $totalPages; $i++): ?>
<?php if ($i == $page): ?>
<strong><?php echo $i; ?></strong>
<?php else: ?>
<a href="https://gitbox.net/pagination.php?page=<?php echo $i; ?>"><?php echo $i; ?></a>
<?php endif; ?>
<?php endfor; ?>
<?php if ($page < $totalPages): ?>
<a href="https://gitbox.net/pagination.php?page=<?php echo $page + 1; ?>">下一頁</a>
<?php endif; ?>
</div>
通過array_slice()和一些基礎的分頁邏輯,我們就可以為任意的數組內容添加分頁功能。這種方式適用於數據量不大、無需數據庫操作的場景,比如靜態內容列表、緩存中的數據或配置項展示等。對於更大規模的數據,建議使用數據庫的LIMIT子句進行分頁查詢。
掌握array_slice() ,是你構建高效PHP 應用的重要一步。希望本文對你有所幫助!