array_slice 是 PHP 内置的一个函数,用于从数组中取出一段连续的元素。它的基本语法是:
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$array:需要截取的数组
$offset:起始位置,0 表示从第一个元素开始
$length:截取的长度,如果不指定则默认截取到数组末尾
$preserve_keys:是否保持原数组的键名,默认为 false
假设我们有一个数组,里面包含了 100 条数据,现在要实现每页显示 10 条数据的分页功能。
当前页码 $page(从 1 开始)
每页显示条数 $pageSize
计算数组截取起点 $offset = ($page - 1) * $pageSize
通过 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,这样就能轻松实现分页效果。