Mettre en ordre à partir de la lettre ....
Posté : 08 avr. 2006, 02:07
par auclairp
Bonjour j'aimerais savoir s'il est possible de mettre en ordre alphabétique de A à Z mais de débuter l'ordre par la lettre "P", et de continuer jusqu'à "Z" pour reprendre le "A" jusqu'au "O".
Exemple:
P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O
Merci de votre aide.
Posté : 08 avr. 2006, 08:35
par Cyrano
C'st toujours possible, mais tu devras créer une fonction personnalisée pour ça : l'opération consistera à séparer les lettres en A et O des lettres entre P et Z puis de trier les deux ensembles séparéments pour regrouper ensuite le second suivi du premier. Avec des expressions régulières, tu devrais arriver à tes fins sans trop de difficultés.
Posté : 08 avr. 2006, 14:50
par Ripat
Curieux et amusant comme demande
Tu veux donc un classement:
Le P avant le A et le Q avant le B, c'est bien ça? Et pour toutes les lettres d'un mot?
Dans ce cas, c'est un simple exercice de substitution de lettres avant tri. Une solution possible est celle-ci:
function myOrdString($str){
$car = 'ABCDEFGHIJKLMNO';
$ord = 'abcdefghijklmno';
return strtr(strtoupper($str), $car, $ord);
}
function compare($a, $b){
return strcmp(myOrdString($a), myOrdString($b));
}
$a = array ('ab', 'aq', 'pa', 'pq');
usort ($a, 'compare');
Basé sur le fait que dans la fonction strcmp() les caractères a --> o auront un "poids" ASCII supérieur aux lettres de P --> Z.
Je doute que ce soit ce que tu recherches mais sait-on jamais...