PHP 7.4 的 array_chunk 默认不补全最后一组,需手动用 array_pad 补齐;可先 chunk 再 map pad,或先 pad 原数组再 chunk;推荐封装支持自定义填充和方向的函数。

PHP 7.4 中 array_chunk 默认不会补全最后一组,它只按原数组切分,不足指定大小的组保持原样。若需“补齐”(如补零、补 null 或自定义值),需手动处理,不能依赖 array_chunk 自身实现。
先用 array_chunk 切分,再遍历补全每组
这是最直接可控的方式:先分块,再对每一块检查长度,不足则用 array_pad 补齐。
$arr = range(1, 17); // 示例:17 个元素
$size = 5;
$chunks = array_chunk($arr, $size);
<p>// 补齐每组到 $size 个元素,用 null 填充
$filled = array_map(function($chunk) use ($size) {
return array_pad($chunk, $size, null);
}, $chunks);</p><p>// 结果:共 4 组,每组 5 个元素,最后一组为 [16,17,null,null,null]
用 array_pad 预填充原数组再 chunk(适合固定补值)
如果补的值统一(如 0 或 ''),可先扩展原数组长度为 $size 的整数倍,再分块,更简洁。
- 计算需补几个元素:
$padCount = ($size - count($arr) % $size) % $size - 用
array_pad($arr, count($arr) + $padCount, 0)扩展 - 再调用
array_chunk(..., $size)
注意:% $size 防止原数组长度已是整数倍时补满一整组(避免多余填充)。
立即学习“PHP免费学习笔记(深入)”;
封装成可复用函数(推荐)
把逻辑收拢,支持自定义填充值和方向(默认右补):
function array_chunk_padded(array $array, int $size, $padValue = null, int $padSide = STR_PAD_RIGHT): array
{
if ($size <= 0) {
return [];
}
$chunks = array_chunk($array, $size);
return array_map(function($chunk) use ($size, $padValue, $padSide) {
$len = count($chunk);
if ($len === $size) return $chunk;
if ($padSide === STR_PAD_LEFT) {
return array_pad($chunk, $size, $padValue);
}
return array_pad($chunk, $size, $padValue);
}, $chunks);
}
<p>// 使用示例
$result = array_chunk_padded([1,2,3], 4, 0); // [[1,2,3,0]]
注意事项
补全会改变数据语义,确认业务是否允许占位值(比如统计时需过滤 null);若只是分页展示,通常无需补全——前端或模板逻辑处理“最后一组少几个”更合理;array_pad 第二个参数是目标总长度,不是补几个,别传错。



















