Памятка по сложению массивов

Одномерные массивы в PHP можно складывать с помощью функции array_merge() и оператора сложения "+". И каждый раз приходится вспоминать, в чем разница в использовании этих двух способов сложения массивов.

Сложение массивов с помощью array_merge(),
когда ключи не важны

Когда ключи не важны и нужно просто объединить массивы, используйте функцию array_merge().
$sum = array_merge($old1, $old2, $old3, ...) Старые ключи вообще не учитываются. Создаются новые числовые ключи, начиная с 0. То есть, бояться совпадения ключей не нужно.

Повторяющиеся значения нужно удалить с помощью функции array_unique(), и заготовка для слияния значений массивов будет выглядеть так:

$new = array_unique(array_merge($old1, $old2, $old3, ...))

Сложение массивов с сохранением ключей

Сложение массивов с помощью функции array_replace()

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

$new = array_replace($old1, $old2, $old3, ...))

Сложение массивов с помощью оператора "+"

Этот способ сложения сложения массивов аналогичен предыдущему. Следует только обратить внимание на то, что здесь, чтобы обновить старый массив новым, нужно к новому массиву прибавить старый, что немного ломает мозг. Преимущества этого способа сложения — он производительнее и короче в записи.

$new = $new + $old

Полезный пример использования такого сложения — массив в качестве параметра функции, когда значения по умолчанию обновляются входными данными:

function f($x, $options=[])
{
    $options += ['x' => 10, 'y' => false]; # defaults
    ...
}

Arr::mergeByKey() — сложение многомерных массивов

Внимание! Выше были приведены примеры только для одномерных массивов. Мы рекомендуем вам пользоваться универсальным методом Arr::mergeByKey(), который складывает по ключам массивы любого типа и любой размерности.

$sum = Arr::mergeByKey($old1, $old2, $old3, ...)