Skip to content

PHP Function: array_replace_recursive()

The array_replace_recursive() function in PHP is a powerful tool for merging arrays in a way that maintains the structure and keys of the original arrays. It operates by replacing elements in the first array with elements from subsequent arrays recursively. This function can be particularly useful when dealing with arrays of arrays, as it allows for easy modification of nested arrays without losing data.

Syntax

The syntax of the array_replace_recursive() function is straightforward, with the first argument being the array that will be modified and subsequent arguments being arrays from which elements will be merged into the first array.

PHP array_replace_recursive function syntax

php
array_replace_recursive ( array &$array1, array $array2 [, array ...$arrayN ] ) : array

How it Works

The array_replace_recursive() function works by iterating over all elements of the arrays passed as arguments. For each element, the function will check if the key exists in the first array. If the key does not exist, the element will simply be added to the first array. If the key does exist, the function will check if the value is an array. If it is, the function will recursively call itself with the current value in the first array and the corresponding value in the second array as the arguments. If the value is not an array, it will simply be replaced with the value from the second array.

This process is repeated for all subsequent arrays passed as arguments, with elements being added or replaced in the first array as necessary. The final result is a single array that is the result of merging all elements from the input arrays. Note: Unlike array_merge_recursive(), this function replaces numeric keys instead of merging them by index.

Examples

Here are a few examples of how the array_replace_recursive() function can be used in practice:

PHP example of array_replace_recursive function usage

php
<?php

$array1 = ['a' => ['b' => 'c']];
$array2 = ['a' => ['b' => 'd']];

$result = array_replace_recursive($array1, $array2);

print_r($result);

?>

The output of this code will be:


console
Array
(
    [a] => Array
        (
            [b] => d
        )
)

As you can see, the value of the "b" key in the first array has been replaced with the corresponding value from the second array.

Another example:

PHP Another example of array_replace_recursive function usage

php
<?php

$array1 = ['a' => ['b' => 'c']];
$array2 = ['a' => 'd'];

$result = array_replace_recursive($array1, $array2);

print_r($result);

?>

The output of this code will be:


console
Array
(
    [a] => d
)

In this case, the "a" key in the second array has replaced the corresponding value in the first array, including the nested array.

Conclusion

In conclusion, the array_replace_recursive() function in PHP provides a convenient way to merge arrays while preserving their original structure and keys. It is particularly valuable for updating nested configuration data or merging structured datasets without manual iteration.

Practice

What does the array_replace_recursive() function do in PHP?

Dual-run preview — compare with live Symfony routes.