И оператор «+», и array_merge():array array_merge (array array1, array array2 [, array ...]) могут объединять несколько массивов, но в процессе использования есть небольшая разница.
array_merge описан в справочном руководстве следующим образом:
array_merge() объединяет ячейки двух или более массивов, при этом значения из одного массива добавляются к предыдущему массиву. Возвращает результирующий массив.
Если входной массив имеет то же имя строкового ключа, значение после имени ключа перезапишет предыдущее значение. Однако если массив содержит числовые ключи, последующие значения не будут перезаписывать исходные значения, а будут добавляться к ним.
Разница между ними заключается в следующем:
1. Если имя ключа массива является числовым именем ключа и в двух объединяемых массивах есть числовые КЛЮЧИ с одинаковым именем, использование array_merge() не перезапишет исходное значение, а использование «+» для объединения массивов заменит первое. Значение возвращается как окончательный результат, а те значения в последующих массивах с тем же именем ключа «отбрасываются» (обратите внимание: это не перезапись, а сохранение значения, которое появляется первым). Пример:
$array1 = array(1=>'0');
$array2 = массив(1=> "данные");
$result1 = $array2 + $array1;/*Результатом является значение $array2*/
print_r ($ результат);
$result = $array1 + $array2 ;/*Результатом является значение $array1*/
print_r ($ результат);
$result3 = array_merge($array2,$array1);/*Результатом является значение $array2 и $array1, а имя ключа переназначается*/
print_r ($ результат3);
$result4 = array_merge($array1,$array2);/*Результатом является значение $array1 и $array2, а имя ключа переназначается*/
print_r($result4);
Результат вывода:
Массив ([1] => данные)
Массив ([1] => 0)
Множество (
[0] => данные
[1] => 0
)
Множество
(
[0] => 0
[1] => данные
)
2. Если одно и то же имя ключа массива является символом, оператор «+» аналогичен тому, когда имя ключа является числом, но array_merge() перезапишет предыдущее значение того же имени ключа.
пример:
$array1 = массив('asd'=>'0');
$array2 = array('asd' => "данные");
$result1 = $array2 + $array1;/*Результатом является значение $array2*/
print_r ($ результат);
$result = $array1 + $array2 ;/*Результатом является значение $array1*/
print_r ($ результат);
$result3 = array_merge($array2,$array1);/*Результат: $array1*/
print_r ($ результат3);
$result4 = array_merge($array1,$array2);/*Результат: $array2*/
print_r ($ результат4);
Результат вывода:
Массив ([asd] => данные)
Массив ([asd] => 0)
Массив ([asd] => 0)
Массив ([asd] => данные)