php数组实现分页
使用 array_slice 函数实现分页
PHP 的 array_slice 函数可以截取数组的一部分,非常适合用于分页。需要计算起始位置和每页显示的数量。
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$itemsPerPage = 10;
$start = ($currentPage - 1) * $itemsPerPage;
$pagedData = array_slice($originalArray, $start, $itemsPerPage);
计算总页数
在分页时需要显示总页数,可以通过数组总数和每页数量计算得出。
$totalItems = count($originalArray);
$totalPages = ceil($totalItems / $itemsPerPage);
生成分页链接
为方便用户导航,通常需要生成分页链接。可以动态生成页码链接。

for ($i = 1; $i <= $totalPages; $i++) {
echo "<a href='?page=$i'>$i</a> ";
}
处理边界情况
需要考虑用户输入的页码超出范围的情况,防止出现错误。
$currentPage = max(1, min($currentPage, $totalPages));
完整示例代码
将上述代码整合为一个完整的分页示例。

$originalArray = range(1, 100); // 示例数组
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$itemsPerPage = 10;
$totalItems = count($originalArray);
$totalPages = ceil($totalItems / $itemsPerPage);
$currentPage = max(1, min($currentPage, $totalPages));
$start = ($currentPage - 1) * $itemsPerPage;
$pagedData = array_slice($originalArray, $start, $itemsPerPage);
foreach ($pagedData as $item) {
echo $item . "<br>";
}
for ($i = 1; $i <= $totalPages; $i++) {
echo "<a href='?page=$i'>$i</a> ";
}
使用自定义函数封装
为了提高代码复用性,可以将分页逻辑封装为函数。
function paginateArray($array, $itemsPerPage = 10, $currentPage = 1) {
$totalItems = count($array);
$totalPages = ceil($totalItems / $itemsPerPage);
$currentPage = max(1, min($currentPage, $totalPages));
$start = ($currentPage - 1) * $itemsPerPage;
return array_slice($array, $start, $itemsPerPage);
}
$pagedData = paginateArray($originalArray);
添加样式美化分页导航
可以使用 CSS 为分页链接添加样式,提升用户体验。
echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
$active = $i == $currentPage ? 'active' : '';
echo "<a class='$active' href='?page=$i'>$i</a>";
}
echo '</div>';
对应的 CSS 样式示例:
.pagination a {
padding: 8px 16px;
text-decoration: none;
border: 1px solid #ddd;
margin: 0 4px;
}
.pagination a.active {
background-color: #4CAF50;
color: white;
border: 1px solid #4CAF50;
}






