當前位置: 首頁> 最新文章列表> PHP中array_chunk函數的preserve_keys參數到底是做什麼的?如何使用它來保留數組鍵值?

PHP中array_chunk函數的preserve_keys參數到底是做什麼的?如何使用它來保留數組鍵值?

M66 2025-04-28

在PHP中, array_chunk函數是一個常用的函數,它用於將一個大的數組分割成多個小的數組。這個函數的基本語法如下:

 array_chunk(array $array, int $size, bool $preserve_keys = false): array

參數解析

  • $array :待分割的數組。

  • $size :每個子數組的大小。

  • $preserve_keys :一個布爾值,表示是否保留原數組的鍵值。

這裡,最常用的參數就是$size$preserve_keys 。而本文將重點講解的是$preserve_keys參數的作用及如何正確使用它。

array_chunk函數的作用

array_chunk函數可以將一個數組分割成多個小數組,並且每個小數組的大小由$size來決定。默認情況下,分割後的數組會使用新的鍵值,從0開始重新編號。如果需要保留原數組的鍵值,可以通過preserve_keys參數來實現。

$preserve_keys參數的作用

$preserve_keys是一個布爾值參數。默認情況下,它的值是false ,這意味著分割後的子數組會丟失原數組的鍵值,重新從0開始。若將$preserve_keys設置為true ,則會保留原數組的鍵值。

示例一:不保留鍵值

$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
        )
)

可以看到,分割後的數組重新給每個子數組分配了從0開始的鍵值。

示例二:保留鍵值

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

$result = array_chunk($array, 2, true);  // 設定preserve_keys為true,保留鍵值

print_r($result);

輸出:

 Array
(
    [0] => Array
        (
            [10] => a
            [20] => b
        )

    [1] => Array
        (
            [30] => c
            [40] => d
        )

    [2] => Array
        (
            [50] => e
        )
)

這時,分割後的子數組保留了原數組的鍵值。

如何使用preserve_keys來保留數組鍵值

使用preserve_keys參數時,只需要在調用array_chunk時將其設置為true ,就能夠保留原數組的鍵值。例如,假設你有一個數組,其中鍵值是有意義的,且你希望保留這些鍵值,可以這樣操作:

 $array = [
    0 => 'apple',
    1 => 'banana',
    2 => 'cherry',
    3 => 'date',
];

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

foreach ($chunks as $chunk) {
    foreach ($chunk as $key => $value) {
        echo "Key: $key, Value: $value\n";
    }
}

輸出:

 Key: 0, Value: apple
Key: 1, Value: banana
Key: 2, Value: cherry
Key: 3, Value: date

如你所見,分割後的數組仍然保留了原數組的鍵值。

總結

通過array_chunk函數的preserve_keys參數,我們可以輕鬆地控制是否保留原數組的鍵值。在默認情況下,鍵值會丟失並從0重新編號;但如果你希望保留原有鍵值,只需將preserve_keys設置為true

這對於需要保留鍵值的場景非常有用,比如分割一些索引值或關聯數組時,保持原數組的結構和鍵值關係。

注意: