當前位置: 首頁> 最新文章列表> 如何將array_chunk 與array_merge_recursive 結合使用,實現數組分塊後再合併的操作?

如何將array_chunk 與array_merge_recursive 結合使用,實現數組分塊後再合併的操作?

M66 2025-04-27

在PHP 中, array_chunkarray_merge_recursive是兩個非常有用的數組操作函數。 array_chunk可以將一個數組分割成多個小塊,而array_merge_recursive則允許將多個數組遞歸地合併在一起。這篇文章將展示如何結合使用這兩個函數,以便在數組分塊後進行合併操作。

1. 使用array_chunk進行數組分塊

array_chunk是PHP 內置的一個函數,它可以將一個數組分割成多個小數組。它的語法如下:

 array_chunk(array $array, int $size, bool $preserve_keys = false): array
  • $array是需要被分塊的數組。

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

  • $preserve_keys參數決定是否保留原數組的鍵值。

示例代碼:

 $array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$chunkedArray = array_chunk($array, 3);
print_r($chunkedArray);

輸出結果:

 Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )

    [2] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
        )
)

2. 使用array_merge_recursive遞歸合併數組

array_merge_recursive函數會遞歸地將多個數組合併成一個。如果數組中的某個鍵在多個數組中都存在, array_merge_recursive會將這些值合併成一個數組。它的語法如下:

 array_merge_recursive(array ...$arrays): array
  • $arrays是要合併的數組,可以是任意數量的數組。

示例代碼:

 $array1 = ["a" => "apple", "b" => "banana"];
$array2 = ["a" => "apricot", "b" => "blueberry"];
$mergedArray = array_merge_recursive($array1, $array2);
print_r($mergedArray);

輸出結果:

 Array
(
    [a] => Array
        (
            [0] => apple
            [1] => apricot
        )

    [b] => Array
        (
            [0] => banana
            [1] => blueberry
        )
)

3. 結合array_chunkarray_merge_recursive進行操作

我們可以將array_chunkarray_merge_recursive結合起來使用,首先將大數組分塊,然後對每個小塊數組進行遞歸合併。這對於一些需要將數據按塊合併的場景非常有用。

假設我們有一個多維數組,我們想要先將它分成幾個塊,然後將這些塊進行合併。下面是實現的代碼示例:

 // 原始數組
$array = [
    "key1" => ["a" => "apple", "b" => "banana"],
    "key2" => ["a" => "apricot", "b" => "blueberry"],
    "key3" => ["c" => "cherry", "d" => "date"],
    "key4" => ["c" => "cranberry", "d" => "dragonfruit"]
];

// 使用 array_chunk 將數組分塊,每個塊包含兩個元素
$chunkedArray = array_chunk($array, 2, true);

// 使用 array_merge_recursive 合併每個分塊
$mergedChunks = array();
foreach ($chunkedArray as $chunk) {
    $mergedChunks[] = array_merge_recursive(...$chunk);
}

// 輸出合併後的結果
print_r($mergedChunks);

輸出結果:

 Array
(
    [0] => Array
        (
            [key1] => Array
                (
                    [a] => apple
                    [b] => banana
                )

            [key2] => Array
                (
                    [a] => apricot
                    [b] => blueberry
                )
        )

    [1] => Array
        (
            [key3] => Array
                (
                    [c] => cherry
                    [d] => date
                )

            [key4] => Array
                (
                    [c] => cranberry
                    [d] => dragonfruit
                )
        )
)

4. 總結

通過結合使用array_chunkarray_merge_recursive ,我們能夠輕鬆地將數組分成多個小塊並遞歸地合併它們。這種方式對於處理複雜的多維數組非常有效,尤其是在處理大量數據時。