Перейти к содержимому

Функция PHP: array_replace_recursive()

Функция array_replace_recursive() в PHP — это мощный инструмент для объединения массивов, который сохраняет структуру и ключи исходных массивов. Она работает путем рекурсивной замены элементов в первом массиве элементами из последующих массивов. Эта функция особенно полезна при работе с массивами массивов, так как позволяет легко изменять вложенные массивы без потери данных.

Синтаксис

Синтаксис функции array_replace_recursive() прост: первый аргумент — это массив, который будет изменен, а последующие аргументы — это массивы, элементы которых будут объединены с первым массивом.

Синтаксис функции array_replace_recursive в PHP

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

Как это работает

Функция array_replace_recursive() работает путем перебора всех элементов массивов, переданных в качестве аргументов. Для каждого элемента функция проверяет, существует ли ключ в первом массиве. Если ключ не существует, элемент просто добавляется в первый массив. Если ключ существует, функция проверяет, является ли значение массивом. Если да, функция рекурсивно вызывает сама себя, передавая текущее значение из первого массива и соответствующее значение из второго массива в качестве аргументов. Если значение не является массивом, оно просто заменяется значением из второго массива.

Этот процесс повторяется для всех последующих массивов, переданных в качестве аргументов, при этом элементы добавляются или заменяются в первом массиве по мере необходимости. Итоговый результат — это единый массив, полученный в результате объединения всех элементов из входных массивов. Примечание: В отличие от array_merge_recursive(), эта функция заменяет числовые ключи, а не объединяет их по индексу.

Примеры

Ниже приведено несколько примеров того, как функция array_replace_recursive() может использоваться на практике:

Пример использования функции array_replace_recursive в PHP

php
<?php

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

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

print_r($result);

?>

Результат выполнения этого кода будет следующим:


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

Как видите, значение ключа "b" в первом массиве было заменено соответствующим значением из второго массива.

Еще один пример:

Еще один пример использования функции array_replace_recursive в PHP

php
<?php

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

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

print_r($result);

?>

Результат выполнения этого кода будет следующим:


console
Array
(
    [a] => d
)

В этом случае ключ "a" во втором массиве заменил соответствующее значение в первом массиве, включая вложенный массив.

Заключение

Подводя итог, функция array_replace_recursive() в PHP предоставляет удобный способ объединения массивов с сохранением их исходной структуры и ключей. Она особенно ценна для обновления вложенных конфигурационных данных или объединения структурированных наборов данных без ручной итерации.

Практика

Что делает функция array_replace_recursive() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.