Ответ 1
Вы можете комбинировать array_merge()
функцией array_unique()
(оба заголовка говорят сами за себя)
$array = array_unique (array_merge ($array1, $array2));
Мне нужно объединить два массива в один массив, но мне нужно удалить до того, как основные данные, которые они имеют вместе (дублированные значения, которые я имею в виду), мне нужны только уникальные значения при объединении.
Как я могу это сделать?
Это пример массива:
Первый массив
array(3) {
[0]=> object(stdClass)#17 (1) {
["email"]=> string(7) "gffggfg"
}
[1]=> object(stdClass)#18 (1) {
["email"]=> string(6) "[email protected]"
}
[2]=> object(stdClass)#19 (1) {
["email"]=> string(6) "wefewf"
}
}
Второй массив
array(3) {
[0]=> object(stdClass)#17 (1) {
["email"]=> string(7) "[email protected]"
}
[1]=> object(stdClass)#18 (1) {
["email"]=> string(6) "wefwef"
}
[2]=> object(stdClass)#19 (1) {
["email"]=> string(6) "wefewf"
}
}
Вы можете комбинировать array_merge()
функцией array_unique()
(оба заголовка говорят сами за себя)
$array = array_unique (array_merge ($array1, $array2));
Если я правильно понял вопрос:
$a1 = Array(1,2,3,4);
$a2 = Array(4,5,6,7);
$array = array_diff(array_merge($a1,$a2),array_intersect($a1,$a2));
print_r($array);
return
Array
(
[0] => 1
[1] => 2
[2] => 3
[5] => 5
[6] => 6
[7] => 7
)
Более быстрое решение:
function concatArrays($arrays){
$buf = [];
foreach($arrays as $arr){
foreach($arr as $v){
$buf[$v] = true;
}
}
return array_keys($buf);
}
$array = concatArrays([$array1, $array2]);
Немного поздний ответ, но я только что обнаружил, что оператор объединения массивов +
выполняет свою работу довольно хорошо (см. Здесь в 3-м разделе).
$array1 + $array2 = $array //if duplicate found, the value in $array1 will be considered ($array2 value for array_merge, if keys clearly specified)