2008-10-02 4 views
21

J'ai deux tableaux de la même taille. Je voudrais fusionner les deux afin que les valeurs d'un soient les index clés du nouveau tableau, et les valeurs du nouveau tableau sont les valeurs de l'autre.Fusionner deux tableaux en tant que paires de valeurs clés dans PHP

En ce moment, je suis en train de boucler les tableaux et de créer le nouveau tableau manuellement, mais j'ai le sentiment qu'il y a une façon beaucoup plus élégante d'y arriver. Je ne vois aucune fonction de tableau à cet effet, mais peut-être que j'ai raté quelque chose? Y a-t-il un moyen simple d'aller dans ce sens?

$mapped_array = mapkeys($array_with_keys, $array_with_values); 

Répondre

50

Voir array_combine() sur PHP.net.

+3

Wow, je suppose que c'est juste un de ces matins - comment ai-je manqué ça? Parfait, merci! –

10

(à partir de la documentation pour faciliter la lecture)

array_combine - Crée un tableau en utilisant une matrice pour les clés et une autre pour ses valeurs

Description de

array array_combine (array $keys , array $values)

Crée un tableau en utilisant les valeurs du tableau de clés en tant que clés et les valeurs du tableau de valeurs en tant que valeurs correspondantes.

Paramètres

clés - Tableau de touches à utiliser. Les valeurs non valides pour la clé seront converties en chaîne.

valeurs - Tableau de valeurs à utiliser

Exemple

<?php 
$a = array('green', 'red', 'yellow'); 
$b = array('avocado', 'apple', 'banana'); 
$c = array_combine($a, $b); 

print_r($c); 
?> 

L'exemple ci-dessus sortie:

Array 
(
    [green] => avocado 
    [red] => apple 
    [yellow] => banana 
) 
4

Cela devrait faire l'affaire

function array_merge_keys($ray1, $ray2) { 
    $keys = array_merge(array_keys($ray1), array_keys($ray2)); 
    $vals = array_merge($ray1, $ray2); 
    return array_combine($keys, $vals); 
} 
Questions connexes