
本文介绍使用 array_splice() 配合布尔切换逻辑,将一维数组按 3、2、3、2… 的规律分块,生成嵌套二维数组,适用于分页展示、布局分组等场景。
在 PHP 开发中,有时需要对数组进行非均匀分块——例如按「3 个元素 → 2 个元素 → 3 个元素 → 2 个元素」的交替模式切分。这不同于 array_chunk() 的固定长度分块,需手动控制每次截取数量。
核心思路是:利用 array_splice($array, 0, $length) 原地移除并返回指定长度的前缀子数组,再通过布尔标志 $step 动态切换长度(true 时取 3,false 时取 2),循环直至原数组为空。
以下是完整可运行示例:
输出结果:
立即学习“PHP免费学习笔记(深入)”;
Array
(
[0] => Array ( [0] => 1 [1] => 2 [2] => 3 )
[1] => Array ( [0] => 4 [1] => 5 )
[2] => Array ( [0] => 6 [1] => 7 [2] => 8 )
[3] => Array ( [0] => 9 [1] => 10 )
)✅ 关键优势:
- array_splice() 直接修改原数组并返回子段,避免额外索引计算;
- 布尔切换简洁高效,易于扩展为其他交替模式(如 4/2、3/3/2 等);
- 时间复杂度为 O(n),空间开销可控。
⚠️ 注意事项:
- 原数组 $array 会被清空,若需保留原始数据,请先用 $temp = $array; 复制;
- 当剩余元素不足所需长度时,array_splice() 自动返回剩余全部元素(不会报错或补空值),符合预期行为;
- 若需更灵活的模式(如 [3,2,3,2,3] 后终止),可将长度序列定义为数组并使用指针迭代。
此方法兼顾可读性与实用性,是处理周期性变长分块任务的推荐方案。











