ordre alphabétique dans un array ?!

ordre alphabétique dans un array ?! - PHP - Programmation

Marsh Posté le 17-02-2004 à 11:18:03    

Bonjour tout le monde ! :)
 
Voilà mon problème... Je souhaite créer un index (mots avec leurs définitions) pour mon site.  
Voilà pour l'instant ce que j'ai fait :

Code :
  1. <?
  2. $index = array(
  3. 'aaaaa'=>'def aaaaa',
  4. 'zzzzz'=>'def zzzzz',
  5. 'mmmmm'=>'def mmmmm',
  6. 'jjjjj'=>'def jjjjj',
  7. 'rrrgth'=>'def rrrgth',
  8. );
  9. foreach($index as $mot=>$def)
  10. {
  11. echo '&nbsp;&nbsp;&nbsp; - <li><b>'.$mot.'</b> : '.$def; }
  12. ?>


 
Bien sûr, il est possible de les classer à la main par ordre alphabétique directement dans le Array... Mais je voudrais les mettre dans n'importe quel sens, et que PHP me les remette dans l'ordre alphabétique... C'est possible ? Comment je puis faire ?!
Aidez-moi s'il vous plait...
 
Merci @ tous !!
SamplaY

Reply

Marsh Posté le 17-02-2004 à 11:18:03   

Reply

Marsh Posté le 17-02-2004 à 11:22:27    

Reply

Marsh Posté le 17-02-2004 à 11:50:02    

Merci beaucoup deliriumtremens ! :)
La fonction qui m'a servi dans mon cas, c'est ksort(); :)
 
Mais j'ai un petit problème avec cette fonction, elle privilégie les majuscules. Ce qui fait qu'elle trie d'abord les mots commençant par des majuscules en ordre alphabétique, et ensuite ceux commençant par des minuscules.. Y'a moyen de trier les deux en même temps ?!  
 
Merci  
@+
SamplaY


Message édité par samplay le 17-02-2004 à 12:27:23
Reply

Marsh Posté le 17-02-2004 à 12:40:25    

Beuh, suis pas grand connaisseur des arrays, mais a priori si tu places un petit strtolower() dans ton traitement ça devrait le faire.
 
http://www.nexen.net/docs/php/anno [...] olower.php
 
Cela dit ya peut-être des fonctions pour tableaux qui gèrent la chose, hein.
 
EDIT : Genre ksort($tableau, SORT_NUMERIC);


Message édité par deliriumtremens le 17-02-2004 à 12:51:58
Reply

Marsh Posté le 17-02-2004 à 13:04:13    

Un strtolower(); ne peut pas le faire, parce que je veux que certaines définitions soient affichées en commençant par une minuscule, et d'autres par une majuscule.  
 
Le SORT_NUMERIC, que je croyais avoir déjà essayé d'ailleurs, permet bien de classer minuscules et majuscules ensemble, mais dans l'ordre inverse... Il commence par le P pour finir avec le A.. Comprends pas moi... J'ai aussi essayé la même chose avec un krsort($tableau, SORT_NUMERIC); mais c'est toujours le même problème...
 
Voici mon code pour ceux qui ne comprendraient pas mon français !! ;-)

Code :
  1. <?
  2. $index = array(
  3. 'ESB'=>'Encéphalopathie Spongiforme Bovine',
  4. 'APBG'=>'Association des Professeurs de Biologie Géologie',
  5. 'EST'=>'Encéphalopathie Spongiforme Transmissible',
  6. 'MCJ'=>'Maladie de Creutzfeldt-Jakob',
  7. 'nvMCJ'=>'nouvelle variante de la Maladie de Creutzfeldt-Jakob',
  8. 'PrP'=>'Protéine Prion',
  9. 'PrPsc'=>'Protéine Prion de forme anormale - sc pour <i>scrapie</i>',
  10. 'PrPc'=>'Protéine Prion de forme normale - c pour <i>cellulaire</i>',
  11. );
  12. ksort($index, SORT_NUMERIC);
  13. reset($index);
  14. while (list ($mot, $def) = each ($index))
  15. {
  16. echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - <b>'.$mot.'</b> : '.$def.'<br>';
  17. }
  18. ?>


Ce qui me donne en HTML :

Code :
  1. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - <b>APBG</b> : Association des Professeurs de Biologie Géologie<br>
  2. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - <b>ESB</b> : Encéphalopathie Spongiforme Bovine<br>
  3. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - <b>EST</b> : Encéphalopathie Spongiforme Transmissible<br>
  4. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - <b>MCJ</b> : Maladie de Creutzfeldt-Jakob<br>
  5. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - <b>PrP</b> : Protéine Prion<br>
  6. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - <b>PrPc</b> : Protéine Prion de forme normale - c pour <i>cellulaire</i><br>
  7. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - <b>PrPsc</b> : Protéine Prion de forme anormale - sc pour <i>scrapie</i><br>
  8. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - <b>nvMCJ</b> : nouvelle variante de la Maladie de Creutzfeldt-Jakob<br>


Message édité par samplay le 17-02-2004 à 13:05:17
Reply

Marsh Posté le 17-02-2004 à 14:47:43    

j'ai trouvé la fonction uksort(); qui me semble pas mal... Mais je vois pas du tout quelles fonction créer pour gérer ce que je veux... Ya pas quelqu'un qui voit, juste en français, sans forcément la programmer, quoi faire ?!
Merci encore
@+
SamplaY

Reply

Marsh Posté le 06-07-2010 à 17:50:58    

Et voilà la solution la plus courte que j'ai trouvée: uksort($array, 'strcasecmp');
 
Vraiment facile!
 
@+
 
Mic
 
http://www.skilto.fr

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed