Подтвердить что ты не робот

Массивы слияния PHP с значениями NOT DUPLICATED

Мне нужно объединить два массива в один массив, но мне нужно удалить до того, как основные данные, которые они имеют вместе (дублированные значения, которые я имею в виду), мне нужны только уникальные значения при объединении.

Как я могу это сделать?

Это пример массива:

Первый массив

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" 
    } 
} 
4b9b3361

Ответ 1

Вы можете комбинировать array_merge() функцией array_unique() (оба заголовка говорят сами за себя)

$array = array_unique (array_merge ($array1, $array2));

Ответ 2

Если я правильно понял вопрос:

 $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
)

Ответ 3

Более быстрое решение:

function concatArrays($arrays){
    $buf = [];
    foreach($arrays as $arr){
        foreach($arr as $v){
            $buf[$v] = true;
        }
    }
    return array_keys($buf);
}


$array = concatArrays([$array1, $array2]);

Ответ 4

Немного поздний ответ, но я только что обнаружил, что оператор объединения массивов + выполняет свою работу довольно хорошо (см. Здесь в 3-м разделе).

$array1 + $array2 = $array //if duplicate found, the value in $array1 will be considered ($array2 value for array_merge, if keys clearly specified)