(PHP 5 >= 5.3.0, PHP 7)
array_replace_recursive — Reemplaza los elementos de los arrays pasados al primer array de forma recursiva
$array1
   [, array $...
  ] ) : array
   array_replace_recursive() reemplaza los valores de
   array1 con los mismos valores de todos los siguientes
   arrays. Si una clave del primer array existe en el segundo array, su valor
   será reemplazado por el valor del segundo array. Si la clave existe en el
   segundo array, y no en el primero, será creada en el primer array.
   Si una clave existe únicamente en el primer array, se dejará como está.
   Si se pasan varios arrays para el reemplazo, serán procesados
   en orden, el último array sobrescribiendo los valores anteriores.
  
array_replace_recursive() es recursiva: realizará la recursividad en los arrays y aplicará el mismo proceso al valor interno.
Cuando el valor en el primer array es escalar, será reemplazado por el valor del segundo array, que puede ser escalar o un array. Cuando el valor del primer y el segundo array son arrays, array_replace_recursive() reemplazará sus respectivos valores recursivamente.
array1El array cuyos elementos son reemplazados.
...Optional. Arrays de los que se extraerán los elementos.
   Devuelve un array, o NULL en caso de error.
  
Ejemplo #1 Ejemplo de array_replace_recursive()
<?php
$base = array('cítricos' => array( "naranja") , 'bayas' => array("mora", "frambuesa"), );
$reemplazos = array('cítricos' => array('piña'), 'bayas' => array('arándano'));
$cesta = array_replace_recursive($base, $reemplazos);
print_r($cesta);
$cesta = array_replace($base, $reemplazos);
print_r($cesta);
?>
El resultado del ejemplo sería:
Array
(
    [cítricos] => Array
        (
            [0] => piña
        )
    [bayas] => Array
        (
            [0] => arándano
            [1] => frambuesa
        )
)
Array
(
    [cítricos] => Array
        (
            [0] => piña
        )
    [bayas] => Array
        (
            [0] => arándano
        )
)
Ejemplo #2 array_replace_recursive() y comportamiento recursivo
<?php
$base = array('cítricos' => array("naranja") , 'bayas' => array("mora", "frambuesa"), 'otros' => 'banana' );
$reemplazos = array('cítricos' => 'piña', 'bayas' => array('arándano'), 'otros' => array('litchis'));
$reemplazos2 = array('cítricos' => array('piña'), 'bayas' => array('arándano'), 'otros' => 'litchis');
$cesta = array_replace_recursive($base, $reemplazos, $reemplazos2);
print_r($cesta);
?>
El resultado del ejemplo sería:
Array
(
    [cítricos] => Array
        (
            [0] => piña
        )
    [bayas] => Array
        (
            [0] => arándano
            [1] => frambuesa
        )
    [otros] => litchis
)