RU | EN

PHP

array_merge VS array + array

array_merge

Сливает элементы одного или большего количества массивов таким образом, что значения одного массива присоединяются к концу предыдущего. Результатом работы функции является новый массив.

Если входные массивы имеют одинаковые строковые ключи, тогда каждое последующее значение будет заменять предыдущее. Однако, если массивы имеют одинаковые числовые ключи, значение, упомянутое последним, не заменит исходное значение, а будет добавлено в конец массива.

В результирующем массиве значения исходного массива с числовыми ключами будут перенумерованы в возрастающем порядке, начиная с нуля.

array() + array()

Добавляет в первый массив новые значения из второго, если в первом массиве есть тот же ключ, что и во втором, будет использовано значение из первого, иначе будет добавлено значение из второго с сохранением ключа.

Примеры использования

Числовые массивы

$first = [1, 2, 3];
$second = [2, 3, 4];
array_merge($first, $second)

Элементы второго массива добавится в конец первого, независимо от их значения.

count(6) => [ 1, 2, 3, 2, 3, 4 ]
$first + $second

Добавятся только те элементы второго массива, ключи которых отсутствуют в первом массиве.

count(3) =>[ 1, 2, 3 ]

Ассоциативные массивы

$first = [
    'one' => 'first_one',
    'two' => 'first_two',
    'three' => 'first_three',
];
$second = [
    'two' => 'second_two',
    'three' => 'second_three',
    'four' => 'second_four',
];
array_merge($first, $second)

Добавятся все элементы второго массива, заменяя элементы первого, если ключи совпадают.

count(4) => [
    'one' => 'first_one',
    'two' => 'second_two',
    'three' => 'second_three',
    'four' => 'second_four',
]
$first + $second

Добавятся только те элементы второго массива, ключи которых отсутствуют в первом массиве.

count(4) => [
    'one' => 'first_one',
    'two' => 'first_two',
    'three' => 'first_three',
    'four' => 'second_four',
]

Смешанные массивы

$first = [
    1,
    2,
    3,
    'one' => 'first_one',
    'two' => 'first_two',
    'three' => 'first_three',
];
$second = [
    2,
    3,
    4,
    'two' => 'second_two',
    'three' => 'second_three',
    'four' => 'second_four',
];
array_merge($first, $second)

Если ключ числовой или отсутсвует в первом массиве - добавит элемент в конец результирующего массива.
Если ключ не числовой и присутствует в первом массиве - заменит значение, на значении из второго массива.

count(10) => [
    0 => 1,
    1 => 2,
    2 => 3,
    'one' => 'first_one',
    'two' => 'second_two',
    'three' => 'second_three',
    3 => 2,
    4 => 3,
    5 => 4,
    'four' => 'second_four',
]
$first + $second

Добавятся только те элементы второго массива, ключи которых отсутствуют в первом массиве.

count(7) => [
    0 => 1,
    1 => 2,
    2 => 3,
    'one' => 'first_one',
    'two' => 'first_two',
    'three' => 'first_three',
    'four' => 'second_four',
]