PHP: array_replace_recursive - Manual
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
array_replace_recursive — Sustituye recursivamente en el primer array los elementos de los otros arrays proporcionados
Descripción
array_replace_recursive(array $array, array ...$replacements): array
array_replace_recursive() es recursiva: si un valor es un array, la misma función de sustitución le será aplicada.
Si el valor en el primer array es escalar, será sustituido por el valor del segundo array, ya sea un escalar o un array. Si los valores del primer y segundo array son ambos arrays, array_replace_recursive() sustituirá los valores recursivamente.
Parámetros
array-
El array en el cual los elementos son sustituidos.
replacements-
Arrays desde los cuales los elementos pueden ser extraídos.
Valores devueltos
Devuelve un array.
Ejemplos
Ejemplo #1 Ejemplo con array_replace_recursive()
<?php
$base = array('citrus' => array("orange"), 'berries' => array("blackberry", "raspberry"));
$replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry'));$basket = array_replace_recursive($base, $replacements);
print_r($basket);$basket = array_replace($base, $replacements);
print_r($basket);
?>
El ejemplo anterior mostrará:
Array
(
[citrus] => Array
(
[0] => pineapple
)
[berries] => Array
(
[0] => blueberry
[1] => raspberry
)
)
Array
(
[citrus] => Array
(
[0] => pineapple
)
[berries] => Array
(
[0] => blueberry
)
)
Ejemplo #2 Ejemplo con array_replace_recursive() y la recursividad
<?php
$base = array('citrus' => array("orange") , 'berries' => array("blackberry", "raspberry"), 'others' => 'banana' );
$replacements = array('citrus' => 'pineapple', 'berries' => array('blueberry'), 'others' => array('litchis'));
$replacements2 = array('citrus' => array('pineapple'), 'berries' => array('blueberry'), 'others' => 'litchis');$basket = array_replace_recursive($base, $replacements, $replacements2);
print_r($basket);?>
El ejemplo anterior mostrará:
Array
(
[citrus] => Array
(
[0] => pineapple
)
[berries] => Array
(
[0] => blueberry
[1] => raspberry
)
[others] => litchis
)
Ver también
- array_replace() - Sustituye los elementos de un array por los de otros arrays
- array_merge_recursive() - Combina uno o varios arrays juntos, de manera recursiva
Found A Problem?
6 years ago
Note that function will NOT replace a sub-tree from you $array1 if its value in $array2 is an empty array.
Even tho the key for this dimension is technically 'set'.
(I suppose it treats it as just another recursive level to dive in, finding no key to compare, backtracking while leaving this sub-tree alone)
For example:
$array1 = ['first' => ['second' => 'hello']];
$array2 = ['first' => []];
$result = array_replace_recursive($array1, $array2);
$result is still: ['first' => ['second' => 'hello']].