当前位置: 首页> 最新文章列表> 使用 array_chunk 拆分数组时如何保证分块的键名不丢失

使用 array_chunk 拆分数组时如何保证分块的键名不丢失

M66 2025-04-26

在 PHP 中,array_chunk() 是一个非常常用的数组操作函数,它可以将一个大数组分割成多个小数组,并返回一个包含分割结果的二维数组。通常,array_chunk() 会重置数组的键名,导致拆分后的每个子数组的键从 0 开始,丢失了原数组的键名。如果你希望在拆分数组时保留原来的键名,该如何做呢?

本文将介绍如何使用 array_chunk() 拆分数组时,保持原键名不被重置或丢失。

1. 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 开始,丢失了原有的键。

2. 如何保留原键名?

为了保持原数组的键名不丢失,可以使用第三个参数 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
        )
)

如你所见,现在每个小数组都保留了原数组的键名,数组键从原来数组的键开始,不会重置。

3. 小结

  • array_chunk() 默认会丢失原数组的键名,因为它会将键重置为从 0 开始。

  • 如果需要保留原数组的键名,只需将 array_chunk() 的第三个参数设置为 true

  • 使用 preserve_keys 参数时,返回的每个小数组的键名将与原数组一致。

希望通过这篇文章,大家能够更清楚地理解如何在使用 array_chunk() 时保留原来的键名。这样就能更灵活地处理拆分后的数组,特别是在需要保留键名信息时。