2009-09-11 11 views
1

J'ai deux tableaux de valeurs que je voudrais combiner - mais les seules méthodes que PHP fournit semblent se combiner par clé au lieu de valeur. Voici un bidouillage que j'ai pu utiliser pour que cela fonctionne, mais je me demande s'il y a une meilleure méthode ou une fonction native que j'ai manquée. Cela fait longtemps que je n'ai pas utilisé de tableaux et il semble qu'il y ait une réponse facile à cela.Fusion et tableau par valeur au lieu de la clé dans PHP

//Input arrays that we want to combine into one array 
$array = array(2, 3, 4, 5); 
$array2 = array(5, 6, 1); 

//Flip values and keys 
$array = array_flip($array); 
$array2 = array_flip($array2); 

//Combine array 
$array3 = $array2 + $array; 

//flip array keys back to values 
$array3 = array_keys($array3); 

//Optional sort 
sort($array3); 

print_r($array3); 

qui renvoie les valeurs combinées des deux tableaux:

Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 3 
    [3] => 4 
    [4] => 5 
    [5] => 6 
) 
+1

Êtes-vous conscient de deux valeurs égales qui pourraient écraser deux clés différentes? – Eimantas

+0

C'est le point. J'essaie de combiner des tableaux par valeur sans tenir compte des clés (qui sont toutes écrites de toute façon par tri). – Xeoncross

+0

Je suis fasciné par ce que pourrait être votre cas d'utilisation. C'est une question intéressante, mais je suis désorienté par * pourquoi vous voulez faire cela? * –

Répondre

4

Pas tout à fait sûr de ce que vous essayez d'accomplir. Je suppose que vous essayez de combiner 2 tableaux sans avoir de doublons. Si tel est le cas alors ce qui suit fonctionnerait

$newarr = array_unique(array_merge($array, $array2)); 
+0

Je pense aussi que cela va faire l'affaire, demandé dans la question. – bisko

+0

Oui, cela fait la même chose avec moins de code. – Xeoncross

Questions connexes