溫馨提示×

如何遞歸合并php多維數(shù)組

PHP
小樊
84
2024-09-07 14:19:31
欄目: 編程語言

要遞歸地合并 PHP 多維數(shù)組,可以使用以下函數(shù):

function array_merge_recursive_ex(array $array1, array $array2): array {
    $merged = $array1;

    foreach ($array2 as $key => $value) {
        if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) {
            $merged[$key] = array_merge_recursive_ex($merged[$key], $value);
        } else {
            $merged[$key] = $value;
        }
    }

    return $merged;
}

這個函數(shù)接受兩個數(shù)組作為參數(shù),并返回一個新的數(shù)組。它會遍歷第二個數(shù)組的每個元素,檢查它們是否是數(shù)組。如果兩個元素都是數(shù)組,則遞歸地調(diào)用 array_merge_recursive_ex 函數(shù)。否則,將第二個數(shù)組的值賦給合并后的數(shù)組。

以下是一個使用此函數(shù)的示例:

$array1 = [
    'a' => 'value1',
    'b' => [
        'c' => 'value2',
        'd' => [
            'e' => 'value3',
        ],
    ],
];

$array2 = [
    'f' => 'value4',
    'b' => [
        'g' => 'value5',
        'd' => [
            'h' => 'value6',
        ],
    ],
];

$mergedArray = array_merge_recursive_ex($array1, $array2);

print_r($mergedArray);

輸出結(jié)果:

Array
(
    [a] => value1
    [b] => Array
        (
            [c] => value2
            [d] => Array
                (
                    [e] => value3
                    [h] => value6
                )

            [g] => value5
        )

    [f] => value4
)

這個示例中,$array1$array2 的多維數(shù)組已經(jīng)成功地合并。注意,當(dāng)兩個數(shù)組具有相同的鍵時,$array2 的值將覆蓋 $array1 的值。

0