2010-10-15 6 views
2

Comment puis-je combiner ces deux tableaux et s'il y a des doublons d'un tableau, un seul est représenté en utilisant PHP.PHP combinant des tableaux

Array 
(
    [0] => 18 
    [1] => 20 
    [2] => 28 
    [3] => 29 
) 

Array 
(
    [0] => 1 
    [1] => 8 
    [2] => 19 
    [3] => 22 
    [4] => 25 
    [5] => 28 
    [6] => 30 
) 
+1

devez-vous maintenir l'association d'index? Si oui, comment traiter les doublons? – Gordon

+0

si vous voulez dire index par [0], [1], non pas vraiment – HELP

+1

* (lié) * [+ opérateur pour tableau en PHP?] (Http://stackoverflow.com/questions/2140090/operator-for-array -in-php) – Gordon

Répondre

10

On dirait que vous avez besoin:

array_unique(array_merge($first_array, $second_array)); 
3

Appliquer array_unique aux résultats de la fonction array_merge.

Exemple:

php > $f=array(1,2,3,4,5); 
php > $r=array(4,5,6,7,8); 
php > print_r(array_unique(array_merge($r,$f))); 
Array 
(
    [0] => 4 
    [1] => 5 
    [2] => 6 
    [3] => 7 
    [4] => 8 
    [5] => 1 
    [6] => 2 
    [7] => 3 
) 
1

Il suffit d'utiliser l'opérateur de somme pour fusionner les valeurs des deux tableaux, par exemple:

$first = array(18, 20, 21, 28, 29); 
$second = array(1, 8, 18, 19, 21, 22, 25, 28, 30); // Contains some elements of $first 
$sum = $first + $second; 

le tableau résultant contiendra les éléments des deux tableaux, alors vous pouvez filtrer les doublons en utilisant array_unique$result = array_unique($sum);. À ce stade, le tableau résultant contiendra les éléments des deux tableaux mais une seule fois:

Array 
(
    [0] => 18 
    [1] => 20 
    [2] => 21 
    [3] => 28 
    [4] => 29 
    [5] => 22 
    [6] => 25 
    [7] => 28 
    [8] => 30 
) 
+0

s'il vous plaît se référer à la question liée liée. Votre approche omettra les clés ** existantes **. La valeur 1 n'est pas un doublon, mais elle est absente du tableau résultant, car '+ 'n'utilisera les éléments qu'après le 5ème de' $ second'. – Gordon

+0

Ouais, c'est un langage PHP typique, ce qui fait que + se comporte différemment de array_merge. Cependant + a des cas d'utilisation peu fréquents, donc bon à garder à l'esprit. – mario