2009-10-31 14 views
1

HI, je commander une liste en PHP qui ressemble à: B1200 120A81 00A12 00A22 C100B C100CCommander Liste alphanumérique en PHP

liste ordonnée serait: 00A12 00A22 120A81 B1200 C100B C100C

Je pensais à diviser chaque ligne dans des tableaux multidimensionnels et ord er mais je suis coincé et peut-être theres une façon complètement différente pour cela.

Merci!

Répondre

6

Si la fonction de tri normale fera ce que vous voulez alors diviser/le tri, il serait facile:

// break up the string into an array on spaces 
$new_array = explode(' ', $input); 
// sort the array 
sort($new_array); 
// put the string back together 
$sorted_string = implode(' ', $new_array); 

ou, plus succinctement:

$sorted_string = implode(' ', sort(explode(' ', $input))); 

Si la valeur par défaut sort() ne donnera pas vous ce que vous voulez, vous devriez vérifier the usort() function.

+2

Je voudrais ajouter que vous pouvez même utiliser la fonction "natsort". – FlorianH

+0

Utilisez le tri avec l'indicateur SORT_NUMERIC: sort ($ new_array, SORT_NUMERIC); # SORT_REGULAR - comparer les éléments normalement (ne modifie pas les types) # SORT_NUMERIC - comparer les éléments numériquement # SORT_STRING - comparer les articles sous forme de chaînes # SORT_LOCALE_STRING - comparer les articles sous forme de chaînes – powtac

+0

SORT_NUMERIC est faux dans ce cas (pas tous les chiffres, aussi des lettres). SORT_STRING est le bon. Si les chaînes hexadécimales peuvent être mélangées, vous voulez les convertir en tous les triplets supérieurs ou inférieurs avant le tri (peut-être même en scission) – ptor