Существует 3 операции с наборами в математике: пересечение, различие и объединение (объединение). В PHP мы можем выполнять эти операции с массивами:
array_intersect array_diff Какая функция для объединения?
В результирующем массиве не может быть дубликатов (например, array_intersect и array_diff ).
Если индексы являются числовыми, то array_merge не будет перезаписывать исходное значение, но будет добавлено ( PHP docs ).
Попробуйте array_merge :
array_unique(array_merge($array1, $array2));
Руководство PHP
array_unique( array_merge( ... ) )
Используйте array_unique и array_merge вместе.
Ответ Адриена не потребует создания последовательно пронумерованного массива из двух последовательно пронумерованных массивов – вот несколько вариантов, которые будут:
array_values(array_unique(array_merge($array1, $array2)));
(Ответ Адриена с нумерацией клавиш после этого)
array_keys(array_flip($array1)+array_flip($array2))
(Поместите значения в ключи и используйте оператор объединения массива)
array_merge($array1, array_diff($array2, $array1))
(Удалите общие значения из второго массива перед слиянием)
Результаты тестов (для слияния двух массивов длиной 1000 тысяч раз в моей системе):
Тот же тест, но с двумя массивами, очень похожими (по крайней мере, на 80%):
Кажется, использование оператора объединения массива для фактического объединения является самым быстрым методом. Обратите внимание, однако, что array_flip является только безопасным, если значения массива – это все строки или все целые числа; если вам нужно создать объединение массива объектов, я рекомендую версию с array_merge и array_diff .
используйте для этого оператор «+». См. Ссылку Операторы массива
Из кода в документации PHP: Array Operators :
<?php $a = array("a" => "apple", "b" => "banana"); $b = array("a" => "pear", "b" => "strawberry", "c" => "cherry"); $c = $a + $b; // Union of $a and $b echo "Union of \$a and \$b: \n"; var_dump($c); $c = $b + $a; // Union of $b and $a echo "Union of \$b and \$a: \n"; var_dump($c); ?>
При выполнении этого сценария будет напечатан следующий текст:
Союз $ a и $ b:
array (3) {
[ "А"] =>
строка (5) "яблоко"
[ "Ь"] =>
строка (6) "банан"
[ "С"] =>
строка (6) "вишня"
}
Союз $ b и $ a:
array (3) {
[ "А"] =>
строка (4) "груша"
[ "Ь"] =>
строка (10) "клубника"
[ "С"] =>
строка (6) "вишня"
}
$result = array_merge_recursive($first, $second);
может быть полезна, когда у вас есть массивы с массивами внутри.
Оператор + :
$x[0] = 4; $x[1] = 1; $y[0] = 9; $y[2] = 5; $u = $y + $x; // Results in: $u[0] === 9; $u[1] === 1; $u[2] === 5;
Заметим, что $x + $y ! = $y + $x
Просто используйте $array1 + $array2 Это приведет к объединению обоих массивов.