2010-10-25 5 views
0

Le tableau suivant arrive:tableau de commande personnalisée avec des paires clé/valeur

Array 
(
    [66-507cddcd16d9786abafccfa78b19acf8] => XL 
    [64-507cddcd16d9786abafccfa78b19acf8] => medium 
    [65-507cddcd16d9786abafccfa78b19acf8] => large 
    [63-507cddcd16d9786abafccfa78b19acf8] => small 
) 

Comment puis-je commander les valeurs du tableau par ordre de taille croissant de telle sorte que la relation clé/valeur est maintenue? Les valeurs du tableau peuvent être une partie ou la totalité des

suivant
Small 
XXL 
Medium 
Large 
XL 
+0

Voir le commentaire de codaddict sur ma réponse à votre autre question. En fait, il aurait probablement été préférable de modifier votre autre question pour l'inclure à la place, afin que je puisse ajuster ma réponse en conséquence. – BoltClock

+0

[Lien à l'autre question ci-dessus pour les non-initiés.] (Http://stackoverflow.com/questions/4014549/php-custom-ordering-array) – BoltClock

Répondre

0

Si vous voulez trier vos valeurs par ordre alphabétique, qui est ce que asort est pour.

1

Si vos besoins de tri sont plus complexes que asort ou ksort comme suggéré précédemment, puis écrire une fonction pour brancher en uasort.

1

Vous devez utiliser uasort:

function sizeSorter($a, $b) { 
    // customize as needed 
    $comp = array_flip(array('xxxs', 'xxs', 'xs', 's', 'small', 'm', 'medium', 'l', 'large', 'xl', 'xxl', 'xxxl')); 
    return $comp[strtolower($a)] - $comp[strtolower($b)]; 
} 

uasort($array, 'sizeSorter'); 

Un exemple concret:

http://codepad.org/vxcN29sO

Questions connexes