PYTHON array_merge_recursive

is this article helpful?
Python replacement for PHP's array_merge_recursive [ edit | history ]
A first attempt at recreating an array_merge_recursive() function. This mostly seems to work for me. I have not tried with all types of values so please update any bugs.

def array_merge_recursive(array1, *arrays):
    for array in arrays:
        for key, value in array.items():
            if key in array1:
                if isinstance(value, dict):
                    array[key] = array_merge_recursive(array1[key], value)
                if isinstance(value, (list, tuple)):
                    array[key] += array1[key]
    return array1

PHP array_merge_recursive

PHP original manual for array_merge_recursive [ show | ]


(PHP 4 >= 4.0.1, PHP 5)

array_merge_recursiveMerge two or more arrays recursively


array array_merge_recursive ( array $array1 [, array $... ] )

array_merge_recursive() merges the elements of one or more arrays together so that the values of one are appended to the end of the previous one. It returns the resulting array.

If the input arrays have the same string keys, then the values for these keys are merged together into an array, and this is done recursively, so that if one of the values is an array itself, the function will merge it with a corresponding entry in another array too. If, however, the arrays have the same numeric key, the later value will not overwrite the original value, but will be appended.



Initial array to merge.


Variable list of arrays to recursively merge.

Return Values

An array of values resulted from merging the arguments together.


Example #1 array_merge_recursive() example

= array("color" => array("favorite" => "red"), 5);
$ar2 = array(10"color" => array("favorite" => "green""blue"));
$result array_merge_recursive($ar1$ar2);

The above example will output:

    [color] => Array
            [favorite] => Array
                    [0] => red
                    [1] => green

            [0] => blue

    [0] => 5
    [1] => 10

See Also