当前位置: 首页> 最新文章列表> 用 array_slice 实现分页功能的简单示例

用 array_slice 实现分页功能的简单示例

gitbox 2025-05-26

什么是 array_slice

array_slice 是 PHP 内置的一个函数,用于从数组中取出一段连续的元素。它的基本语法是:

array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
  • $array:需要截取的数组

  • $offset:起始位置,0 表示从第一个元素开始

  • $length:截取的长度,如果不指定则默认截取到数组末尾

  • $preserve_keys:是否保持原数组的键名,默认为 false


利用 array_slice 实现分页

假设我们有一个数组,里面包含了 100 条数据,现在要实现每页显示 10 条数据的分页功能。

1. 计算分页参数

  • 当前页码 $page(从 1 开始)

  • 每页显示条数 $pageSize

  • 计算数组截取起点 $offset = ($page - 1) * $pageSize

2. 截取当前页的数据

通过 array_slice 从数组中截取当前页的数据即可。


示例代码

<?php
// 模拟数据数组
$data = range(1, 100); // 生成包含 1 到 100 的数字数组

// 获取当前页码,默认是第 1 页
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$page = max($page, 1); // 确保页码不小于 1

// 每页显示多少条
$pageSize = 10;

// 计算偏移量
$offset = ($page - 1) * $pageSize;

// 用 array_slice 截取当前页的数据
$pageData = array_slice($data, $offset, $pageSize);

// 输出当前页的数据
foreach ($pageData as $item) {
    echo "数据项:$item<br>";
}

// 生成分页链接
$totalPages = ceil(count($data) / $pageSize);

echo "<div>";
for ($i = 1; $i <= $totalPages; $i++) {
    if ($i == $page) {
        echo "<strong>$i</strong> ";
    } else {
        echo "<a href=\"https://gitbox.net/page.php?page=$i\">$i</a> ";
    }
}
echo "</div>";
?>

运行效果

访问 page.php?page=1 会显示第 1 页的 10 条数据,访问 page.php?page=2 则显示第 2 页的内容,依次类推。


小结

使用 PHP 的 array_slice 函数结合简单的分页计算,可以非常方便地实现数组的分页功能。虽然实际开发中分页数据通常来自数据库,但对于小型数据集或者缓存数据,array_slice 是非常轻量且高效的方案。

记住,关键点在于计算正确的偏移量 $offset,和控制每页显示的条数 $pageSize,这样就能轻松实现分页效果。