在 PHP 中,array_chunk() 是一个非常常用的数组操作函数,它可以将一个大数组分割成多个小数组,并返回一个包含分割结果的二维数组。通常,array_chunk() 会重置数组的键名,导致拆分后的每个子数组的键从 0 开始,丢失了原数组的键名。如果你希望在拆分数组时保留原来的键名,该如何做呢?
本文将介绍如何使用 array_chunk() 拆分数组时,保持原键名不被重置或丢失。
首先来看 array_chunk() 的默认行为。假设我们有一个数组,其中包含几个元素,并且这些元素有自定义的键名:
<?php
$array = [
1 => 'apple',
2 => 'banana',
3 => 'cherry',
4 => 'date',
5 => 'elderberry'
];
$chunkedArray = array_chunk($array, 2);
print_r($chunkedArray);
?>
输出结果会是这样的:
Array
(
[0] => Array
(
[0] => apple
[1] => banana
)
[1] => Array
(
[0] => cherry
[1] => date
)
[2] => Array
(
[0] => elderberry
)
)
如你所见,array_chunk() 将原数组拆分成了多个小数组,但所有的小数组键名都被重置为了从 0 开始,丢失了原有的键。
为了保持原数组的键名不丢失,可以使用第三个参数 preserve_keys。默认情况下,该参数是 false,这就是为什么原键会丢失。若将其设置为 true,则 array_chunk() 会保留原来的键名。
<?php
$array = [
1 => 'apple',
2 => 'banana',
3 => 'cherry',
4 => 'date',
5 => 'elderberry'
];
$chunkedArray = array_chunk($array, 2, true);
print_r($chunkedArray);
?>
输出结果将会是:
Array
(
[0] => Array
(
[1] => apple
[2] => banana
)
[1] => Array
(
[3] => cherry
[4] => date
)
[2] => Array
(
[5] => elderberry
)
)
如你所见,现在每个小数组都保留了原数组的键名,数组键从原来数组的键开始,不会重置。
array_chunk() 默认会丢失原数组的键名,因为它会将键重置为从 0 开始。
如果需要保留原数组的键名,只需将 array_chunk() 的第三个参数设置为 true。
使用 preserve_keys 参数时,返回的每个小数组的键名将与原数组一致。
希望通过这篇文章,大家能够更清楚地理解如何在使用 array_chunk() 时保留原来的键名。这样就能更灵活地处理拆分后的数组,特别是在需要保留键名信息时。