php实现数组分页
PHP 实现数组分页的方法
使用 array_slice 函数
array_slice 是 PHP 内置函数,可以从数组中截取指定范围的元素。结合分页参数即可实现数组分页。
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$page = 2; // 当前页码
$perPage = 3; // 每页显示数量
$offset = ($page - 1) * $perPage;
$paginatedArray = array_slice($array, $offset, $perPage);
print_r($paginatedArray);
封装可复用的分页函数
将分页逻辑封装成函数,方便多处调用。
function paginateArray($array, $page, $perPage) {
$total = count($array);
$offset = ($page - 1) * $perPage;
return array_slice($array, $offset, $perPage);
}
$data = range(1, 100);
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$items = paginateArray($data, $page, 10);
结合分页导航
计算总页数并生成分页导航链接。
$totalItems = count($array);
$totalPages = ceil($totalItems / $perPage);
for ($i = 1; $i <= $totalPages; $i++) {
echo "<a href='?page=$i'>$i</a> ";
}
处理边界情况
增加对无效页码和空数组的处理。
function safePaginate($array, $page, $perPage) {
$page = max(1, $page);
$total = count($array);
if ($total == 0) return [];
$totalPages = ceil($total / $perPage);
$page = min($page, $totalPages);
return array_slice($array, ($page - 1) * $perPage, $perPage);
}
保留数组键名
如果需要保留原始数组的键名,可以设置 array_slice 的第四个参数。

$assocArray = ['a' => 1, 'b' => 2, 'c' => 3];
$paginated = array_slice($assocArray, 1, 1, true);
// 结果: ['b' => 2]
性能考虑
对于超大数组,可以考虑其他存储方式或数据库分页。数组分页适合中小规模数据,所有数据需要预先加载到内存中。






