定义和用法
PHP 的 array_chunk() 函数用于将一个数组分割成多个“块”(子数组),每个块包含指定数量的元素。此函数非常适合处理需要分批操作数据的场景,例如分页显示、批量处理等。
此函数首次在 PHP 版本 4.2.0 中引入。
功能
- 将原数组按指定大小分割成多个子数组。
- 可选择保留原数组的键名或重新索引。
- 返回一个包含所有块的多维数组。
语法
参数
参数 | 描述 |
---|---|
$array | (必填)待分割的输入数组。 |
$size | (必填)每个块包含的元素数量(正整数),若 $size < 1,函数返回 null 并触发警告。 |
$preserve_keys | (可选)
|
返回值
- 成功时返回分割后的多维数组。
- 错误时返回 null(如参数无效)。
示例
1. 基本用法(默认重新索引键)
输出
Array
(
[0] => Array
(
[0] => Apple
[1] => Banana
)
[1] => Array
(
[0] => Orange
[1] => Grape
)
[2] => Array
(
[0] => Mango
)
)
(
[0] => Array
(
[0] => Apple
[1] => Banana
)
[1] => Array
(
[0] => Orange
[1] => Grape
)
[2] => Array
(
[0] => Mango
)
)
2. 保留原键名(关联数组分割)
输出
Array
(
[0] => Array
(
[a] => Apple
[b] => Banana
)
[1] => Array
(
[c] => Orange
[d] => Grape
)
)
(
[0] => Array
(
[a] => Apple
[b] => Banana
)
[1] => Array
(
[c] => Orange
[d] => Grape
)
)
3. 块大小超过数组长度
输出
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
)
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
)
注意事项
1、键名处理规则
- 默认情况下($preserve_keys = false),子数组的键会被重新索引为从0开始的整数。
- 若启用 $preserve_keys = true,原数组的键名(包括字符串键)会被保留。
2、最后一个块的大小
如果原数组元素总数不能被 $size 整除,最后一个块的元素数量会小于 $size。3、非数组输入
若传入非数组参数,函数返回 null 并触发警告:
4、多维数组
array_chunk() 不会递归处理多维数组,仅分割第一层:
常见应用场景
1、分页显示数据
将数据库查询结果分割成每页显示固定数量的条目:2、批量处理任务
分割任务列表,分批执行以避免资源过载:
3、格式化输出数据
将一维数组转换为表格形式的二维结构:
总结
array_chunk()
是处理数组分块的便捷工具,通过合理设置块大小和键名保留选项,可灵活应对多种业务场景。使用时需注意参数的合法性,并结合实际需求选择是否保留原键名。