134 votes

PHP - Fusionner deux tableaux en un seul (et supprimer les doublons)

Bonjour, j'essaie de fusionner deux tableaux et je veux également supprimer les valeurs en double du tableau final.

Voici mon tableau 1 :

Array
    (
    [0] => stdClass Object
    (
    [ID] => 749
    [post_author] => 1
    [post_date] => 2012-11-20 06:26:07
    [post_date_gmt] => 2012-11-20 06:26:07
)

Et voici mon tableau 2 :

Array
(
[0] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

)

J'utilise array_merge pour fusionner les deux tableaux en un seul. Le résultat est le suivant

Array
(
[0] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

[1] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

)

Je veux supprimer ces entrées en double ou puis-je les supprimer avant de fusionner... S'il vous plaît aidez... Merci !!!!!!!

1voto

kantsverma Points 72

La fusion de deux tableaux ne supprimera pas les doublons, vous pouvez essayer l'exemple ci-dessous pour obtenir l'unique de deux tableaux.

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");

$result=array_diff($a1,$a2);
print_r($result);

1voto

Dans mon cas, j'ai dû utiliser ->toArray()

array_unique(array_merge($array1->toArray(),$array2->toArray()), SORT_REGULAR);

qui résulte de la combinaison de ces deux réponses

0voto

Phantom1412 Points 11

La meilleure solution ci-dessus rencontre un problème lors de l'utilisation des mêmes clés associatives, array_merge() fusionnera les éléments du tableau ensemble lorsqu'ils ont la même clé NON-NUMBER, elle n'est donc pas adaptée au cas suivant

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("c"=>"red","d"=>"black","e"=>"green");

Si vous êtes en mesure d'envoyer votre valeur vers les clés de vos tableaux (par exemple ->pluck('name', 'id')->toArray() dans Eloquent), vous pouvez utiliser la méthode de fusion suivante au lieu de cela

array_keys(array_merge($a1, $a2))

En gros, ce code utilise le comportement de array_merge() pour se débarrasser des clés dupliquées et vous renvoie un nouveau tableau avec les clés comme éléments du tableau, j'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X