array_chunk 将一维数组按指定数量切分为二维数组,为分页提供结构基础;例如 explode 拆分字符串后,用 array_chunk($tags, 3) 每3个元素生成一页,再通过 $pages[$currentPage-1] 获取当前页数据。

用 explode 拆分字符串得到数组后,再用 array_chunk 实现“分页”,本质是把一维数组按指定数量切分成多个子数组,每个子数组可视为一页内容。
理解 array_chunk 的作用
array_chunk 不是分页函数,但它能为分页提供结构基础:它把原数组按固定大小切成二维数组。例如一页显示 5 条,就每 5 个元素组成一个子数组。
语法:array_chunk($array, $size, $preserve_keys = false)
-
$array:要处理的数组(比如
explode返回的结果) - $size:每页元素数量(正整数)
-
$preserve_keys:是否保留原键名(通常设为
false,避免索引混乱)
从 explode 到分页的完整步骤
假设你有一段用逗号分隔的标签字符串:"php,mysql,html,css,js,laravel,vue,git"
目标:每页显示 3 个标签,生成带页码的分组结果。
代码示例:
$str = "php,mysql,html,css,js,laravel,vue,git";
$tags = explode(',', $str); // 得到一维数组
$pages = array_chunk($tags, 3); // 每 3 个切一组 → 二维数组
<p>// 输出各页内容(模拟分页展示)
foreach ($pages as $pageNo => $pageItems) {
echo "第 " . ($pageNo + 1) . " 页: " . implode(', ', $pageItems) . "\n";
}</p>输出结果:
第 1 页: php, mysql, html 第 2 页: css, js, laravel 第 3 页: vue, git
配合实际分页逻辑(如 URL 传参)
如果要在网页中实现点击“下一页”切换,需结合当前页码参数(如 $_GET['page'])来取对应子数组:
- 先计算总页数:
$totalPages = ceil(count($tags) / $perPage) - 获取当前页码(带校验):
$currentPage = max(1, min($totalPages, (int)$_GET['page'] ?? 1)) - 取出当前页数据:
$currentPageData = $pages[$currentPage - 1] ?? []
注意:因为 array_chunk 返回的二维数组键是从 0 开始的,所以第 n 页对应索引是 n-1。
注意事项和常见坑
- 空字符串或重复分隔符会导致
explode产生空元素(如explode(',', ',a,,b,')→['', 'a', '', 'b', '']),建议拆分后用array_filter($arr, 'strlen')清理 -
$size必须大于 0,否则报 Warning;等于 1 时每页一个元素,适合逐条展示 - 若原数组为空,
array_chunk返回空数组[],不是[[]] - 不支持跳过前 N 条的偏移量(那是
array_slice的事),array_chunk是纯等长切分

















