В математике есть 3 операции с множествами: пересечение, разность и объединение (объединение). В PHP мы можем выполнять эти операции с массивами:
array_intersect
array_diff
Что такое функция for union?
В массиве результатов не должно быть дубликатов (например, array_intersect
и array_diff
).
Если индексы являются числовыми, то array_merge
не будет перезаписывать исходное значение, но будет добавляться ( PHP docs ).
В ответе Адриена нет необходимости создавать последовательно пронумерованный массив из двух последовательно пронумерованных массивов - вот несколько вариантов, которые будут:
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% дублируются):
Кажется, используя массив оператор союза, чтобы сделать ctual union - самый быстрый метод. Однако обратите внимание, что array_flip
безопасен, только если значения массива - это все строки или все целые числа; если вам нужно произвести объединение массива объектов, я рекомендую версию с array_merge
и array_diff
.
volatile
имеет ничто , чтобы сделать с многопоточностью. Это не предназначается для многопоточности, и это не имеет никаких свойств, относящихся к многопоточности.
– jalf
01.10.2019, 07:33
используйте оператор «+» для этого. Смотрите ссылку Array Operators
{% set list1,list2 = variable1.split(';') %}
.
– Dave
12.04.2016, 06:54
$result = array_merge_recursive($first, $second);
может быть полезно, когда у вас есть массивы с массивами внутри.
Из кода в документации PHP: Операторы массивов :
<?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);
?>
При выполнении этот скрипт выведет следующее:
Union of $a and $b: array(3) { ["a"]=> string(5) "apple" ["b"]=> string(6) "banana" ["c"]=> string(6) "cherry" } Union of $b and $a: array(3) { ["a"]=> string(4) "pear" ["b"]=> string(10) "strawberry" ["c"]=> string(6) "cherry" }
Просто используйте $array1 + $array2
Это приведет к объединению обоих массивов.
array_unique
– Sebastian 30.05.2013, 01:19