(PHP 5 >= 5.3.0, PHP 7, PHP 8)
array_replace_recursive — Рекурсивно заменяет элементы первого массива элементами других массивов
Функция array_replace_recursive() заменяет значения массива
array на значения
с тем же ключом из каждого следующего массива.
Значение первого массива заменяется значением из второго,
если второй массив содержит ключ из первого.
Функция создаст ключ в первом массиве,
если второй массив содержит ключ, которого нет в первом.
Ключ в первом массиве не изменяется, если ключ содержится только в первом массиве.
Массивы обрабатываются по порядку, очередные значения перезаписывают
предыдущие.
Функция array_replace_recursive() рекурсивно углубляется в массивы и применяет к каждому внутреннему значению один и тот же процесс.
Скалярное значение в первом массиве заменяется скалярным значением или массивом из второго. Функция array_replace_recursive() рекурсивно заменит значения в значении-массиве первого массива, если значения обоих массивов содержат массив.
arrayМассив, элементы которого требуется заменить.
replacementsМассивы, из которых функция возьмёт элементы для замены.
Функция возвращает значение с типом array.
Пример #1 Пример рекурсивной замены элементов функцией 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);
?>Результат выполнения приведённого примера:
Array
(
[citrus] => Array
(
[0] => pineapple
)
[berries] => Array
(
[0] => blueberry
[1] => raspberry
)
)
Array
(
[citrus] => Array
(
[0] => pineapple
)
[berries] => Array
(
[0] => blueberry
)
)
Пример #2 Функция array_replace_recursive() и рекурсивное поведение
<?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);
?>Результат выполнения приведённого примера:
Array
(
[citrus] => Array
(
[0] => pineapple
)
[berries] => Array
(
[0] => blueberry
[1] => raspberry
)
[others] => litchis
)