web-dev-qa-db-fra.com

PHP fusionner des tableaux avec uniquement des valeurs NON DUPLIQUÉES

J'ai besoin de fusionner deux tableaux en 1 tableau, mais ce dont j'ai besoin est de supprimer avant les données principales qu'ils ont en commun (valeurs dupliquées, je veux dire), je n'ai besoin que de valeurs uniques lors de la fusion.

Comment puis je faire ça?

Voici l'exemple de tableau:

Premier tableau

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

Deuxième tableau

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" 
    } 
} 
54
itsme

Vous pouvez combiner la fonction array_merge() avec la fonction array_unique() (les deux titres sont assez explicites)

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

Si je comprends bien la question:

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

revenir

Array
(
[0] => 1
[1] => 2
[2] => 3
[5] => 5
[6] => 6
[7] => 7
)
11
Luca Rainone

Réponse un peu tardive, mais je viens de découvrir que l'opérateur d'union de tableau + fait le travail assez largement (trouvé ici à la 3ème section).

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

Solution plus rapide:

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


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