Ответ 1
EDIT: Ах, извините, я не заметил, что аргументы были отменены. Ответ да, то, потому что результирующий массив всегда объединяет два массива, но в то время как +
дает приоритет значениям в первом массиве и array_replace
ко второму.
Единственное фактическое различие заключается в производительности, где +
может быть предпочтительным, поскольку, когда он находит дубликаты, он не заменяет значение; он просто движется дальше. Кроме того, это не предполагает (относительно дорогого) вызова функции.
Нет. array_replace
заменяет элементы, а +
учитывает первое значение:
<?php
print_r(array_replace([0 => 1], [0 => 2]));
print_r([0 => 1] + [0 => 2]);
Array ( [0] => 2 ) Array ( [0] => 1 )
В процитировать руководство:
Оператор + возвращает правый массив, присоединенный к левому массиву; для ключей, которые существуют в обоих массивах, будут использоваться элементы из левого массива, а соответствующие элементы из правого массива будут игнорироваться.
Что касается ссылок, они сохраняются в обоих случаях.