(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 )