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 !!!!!!!

313voto

Pickett Points 3287
array_unique(array_merge($array1,$array2), SORT_REGULAR);

http://se2.php.net/manual/en/function.array-unique.php

9voto

Nikola Petkanski Points 1197

Comme déjà mentionné, array_unique() pourrait être utilisé, mais uniquement lorsqu'il s'agit de données simples. Les objets ne sont pas si simples à manipuler.

Lorsque php essaie de fusionner les tableaux, il essaie de comparer les valeurs des membres du tableau. Si un membre est un objet, il ne peut pas obtenir sa valeur et utilise le hachage spl à la place. Pour en savoir plus sur spl_object_hash, cliquez ici.

Pour faire simple, si vous avez deux objets, instances de la même classe, et si l'un d'eux n'est pas une référence à l'autre, vous aurez deux objets, quelle que soit la valeur de leurs propriétés.

Pour être sûr de ne pas avoir de doublons dans le tableau fusionné, je pense que vous devriez traiter le cas vous-même.

De même, si vous comptez fusionner des tableaux multidimensionnels, pensez à utiliser array_merge_recursive() sur array_merge() .

7voto

Daxen Points 508

Il va fusionner deux tableaux et supprimer les doublons.

<?php
 $first = 'your first array';
 $second = 'your second array';
 $result = array_merge($first,$second);
 print_r($result);
 $result1= array_unique($result);
 print_r($result1);
 ?>

Essayez ce lien lien1

4voto

Kaii Points 2099

Essayez d'utiliser le array_unique()

cela élimine les données dupliquées dans la liste de vos tableaux

3voto

Usman Haider Points 11

Vous pouvez utiliser ce code pour obtenir le résultat souhaité. Il supprimera les doublons.

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

$result=array_unique(array_merge($a1,$a2));

print_r($result);

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