當前位置: 首頁> 最新文章列表> array_chunk 返回的數組鍵名是連續的,可以嗎?

array_chunk 返回的數組鍵名是連續的,可以嗎?

M66 2025-04-25

在PHP 中, array_chunk是一個非常實用的函數,可以將一個大數組分割成多個小數組,並且它還允許我們定義每個小數組的最大長度。

函數簽名如下:

 array_chunk(array $array, int $length, bool $preserve_keys = false): array
  • $array :輸入的數組。

  • $ length :每個分割數組的長度。

  • $preserve_keys :如果設置為true ,則返回的數組將保留原數組的鍵名;如果為false ,則返回的數組會重新生成連續的數字鍵名。

1. array_chunk後返回的新數組鍵名保持不變嗎?

默認情況下, array_chunk會根據第三個參數$preserve_keys來決定是否保留原數組的鍵名:

  • $preserve_keys設置為false (默認值)時,返回的新數組將使用連續的數字鍵名,從0開始。

  • $preserve_keys設置為true,新數組將保留原數組的鍵名。

示例: $preserve_keysfalse

 <?php
$array = [10 => 'a', 20 => 'b', 30 => 'c', 40 => 'd', 50 => 'e'];

$result = array_chunk($array, 2);

print_r($result);
?>

輸出結果:

 Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )
    [1] => Array
        (
            [0] => c
            [1] => d
        )
    [2] => Array
        (
            [0] => e
        )
)

如您所見,在上述代碼中, $preserve_keys默認為false ,因此返回的數組的鍵名被重新編號為0, 1, 2 ,並不保留原數組中的10, 20, 30等鍵名。

示例: $preserve_keystrue

 <?php
$array = [10 => 'a', 20 => 'b', 30 => 'c', 40 => 'd', 50 => 'e'];

$result = array_chunk($array, 2, true);

print_r($result);
?>

輸出結果:

 Array
(
    [10] => Array
        (
            [0] => a
            [1] => b
        )
    [20] => Array
        (
            [0] => c
            [1] => d
        )
    [30] => Array
        (
            [0] => e
        )
)

在這個例子中, $preserve_keys被設置為true ,因此返回的數組保留了原始數組中的鍵名: 10, 20, 30

2. array_chunk返回的新數組的鍵名是連續的嗎?

  • $preserve_keys設置為false,返回的新數組的鍵名是連續的。也就是說,新的數組將從0開始,並以連續的數字進行編號。

  • $preserve_keys設置為true,返回的新數組將保留原始的鍵名,因此新數組的鍵名可能不是連續的,而是與原始數組中相應分割部分的鍵名一致。

3.總結

array_chunk的行為取決於$preserve_keys參數:

  • 默認情況下( $preserve_keys = false ),新數組的鍵名是連續的,從0開始。

  • 如果設置$preserve_keys = true ,新數組將保留原始數組的鍵名。

如果您需要一個連續的數字鍵名,您應該將$preserve_keys設置為false ,否則可以保留原始鍵名。