Tri de Tableau...Youpiie...

Tri de Tableau...Youpiie... - PHP - Programmation

Marsh Posté le 08-06-2008 à 12:29:20    

Hello tout le monde.
 
Voilà j'ai un question pas forcément passionnante car il s'agit d'un problème de tri de tableau...et je sèche....j'ai donc besoin de vos lumières!
 
 
Voilà en résumé:
 
 
J'ai une liste de résultats sous forme d'un tableau classé dans cet ordre:
 
joueur1[99][98][97][45]
joueur2[100][98][92][45]
joueur3[98][84][47][25]
joueur4[98][97][56][15]
 
Chaque joueur possède un certain nombre de notes, et ces notes sont triées dans le tableau.
 
Mon problème est que je dois afficher un classement de ces joueurs en fonction des meilleures notes.
 
Donc en premier tous les joueurs qui ont un 100, puis tous les joueurs qui on un 99 etc... De plus le joueur qui a un 100 ET un 99 sera devant celui qui a un 100 ET un 98... et ainsi de suite. Il faut prendre en compte les 4 meilleures notes pour chaque joueur.... j'espère que je suis clair....
 
Donc les résultats en fonction du tableau ci-dessus doivent être tirés de cette façon:
 
1: joueur2[100][98][92][45]
2: joueur1[99][98][97][45]
3: joueur4[98][97][56][15]
4: joueur3[98][84][47][25]
 
Bref, je ne sais pas du tout comment faire.....
 
Merci d'avance!


Message édité par max-imum le 08-06-2008 à 12:30:00
Reply

Marsh Posté le 08-06-2008 à 12:29:20   

Reply

Marsh Posté le 08-06-2008 à 18:02:04    

tu souhaites trier par le premier index, c'est ça ?
je ne comprends pas trop l'utilité de faire un tableau avec autant d'indexes, ceci dit, tu peux stocker dans une table temporaire tes "notes" et trier cette table ...
concrètement si $array_A est ton tableau actuel :
 

Code :
  1. $temp = array();
  2. foreach($array_A as $joueur => $array_notes)
  3. {
  4.     $temp[$joueur] = $array_notes[0];
  5. }
  6. arsort($temp);
  7. print_r($temp);



---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 08-06-2008 à 22:01:52    

mode crade

Code :
  1. usort( $monTableauBizarre, create_function ( '$a,$b','return $a[0]> $b[0] || ($a[0] ==$b[0] && ( $a[1] > $b[1] || ($a[1] ==$b[1] &&( $a[2] > $b[2] || ($a[2] ==$b[2] && $a[3] > $b[3]))))))');
 

ou un truc du genre

 

ou sinon, en moins drole , tu fais une vrai fonction de comparaison , c'est plus propre

Message cité 1 fois
Message édité par flo850 le 08-06-2008 à 22:02:32

---------------

Reply

Marsh Posté le 09-06-2008 à 13:52:49    

j'ai un peu de mal avec l'énoncé :
 
si c'est un classement sur les 4 meilleures notes : extrait les 4 meilleures notes, puis fait une moyenne et réordonne en conséquence (donc un joueur avec 100 et 50 sera après 98 et 97 dans ce cas).
 
Sinon, si c'est un classement la meilleure note, puis la seconde meilleure note, etc :
tu fais ta recherche sur la première clé, tu la sors de ta liste, et tu recommences avec les autres pour la 2eme clé et ainsi de suite, en prenant en compte les éventuelles égalité bien sûr. (de cette manière le joueur avec 100 sortira avant celui qui a 98, quelles que soient les autres valeurs)

Reply

Marsh Posté le 09-06-2008 à 14:20:00    

flo850 a écrit :

create_function ();


OMFG me dit pas qu'ils ont osé?[:pingouino]

 

[edit]

 

Si, ils ont osé.[:roane]


Message édité par skeye le 09-06-2008 à 14:20:36

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 09-06-2008 à 14:21:22    

ca marche pour de vrai ( je l'utilise quand j'ai des tableaux d'objet et que je fait une crise de fainéantise )


---------------

Reply

Marsh Posté le 09-06-2008 à 14:22:21    

flo850 a écrit :

ca marche pour de vrai ( je l'utilise quand j'ai des tableaux d'objet et que je fait une crise de fainéantise )


[:sadnoir]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-06-2008 à 01:09:15    

MErci pour vos réponses et désolé pour le délai de réponse (j'étais absent).
 
PunkRod et NewsletTux merci pour vos suggestions, je vais explorer dans ce sens! Je vous redonne des nouvelles.

Reply

Sujets relatifs:

Leave a Replay

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