2011-02-22 4 views
2

J'ai besoin de trier un tableau par ses clés en fonction de l'ordre des valeurs dans un autre tableau. Exemple simple:Tri d'un tableau par ses clés par un autre tableau

$sort_array = array('key1', 'key2'); 

$array_that_needs_sorting = array('key2' => 'value2', 'key1' => 'value1'); 

Après le tri, le tableau doit être:

array('key1' => 'value1', 'key2' => 'value2'); 

Répondre

1

Vous pouvez jeter un oeil à Sort an Array by keys based on another Array?. Cela devrait vous donner une idée sur la façon d'accomplir cela.

+0

Merci, j'ai essayé toutes les fonctions dans ce sujet avant, mais cela n'a pas fonctionné parce que mes tableaux n'étaient pas de la même taille – Jesse

0
array_merge(array_combine($sort_array, array_fill(0, count($sort_array), null)) 
    , $array_that_needs_sorting); 
3

Si vous connaissez les $sort_array clés sont toutes présentes dans le tableau qui doit être trié, vous pouvez le faire:

$sorted = array_merge(array_flip($keys), $unsorted); 

$keys est $sort_array et $unsorted est $array_that_needs_sorting.

+1

c'est dommage que cela ne fonctionne que pour les clés de chaîne! –

Questions connexes