Tri dans un tableau (débutant inside)

Tri dans un tableau (débutant inside) - PHP - Programmation

Marsh Posté le 12-12-2005 à 11:32:29    

Voilà désolé je débute et je galère un peu avec les tableaux, j'ai du mal à m'adapter à la logique PHPienne.
J'ai un tableau comme ça, et je sais pas comment faire pour le trier sur un critère donné, le salaire ou, le nom, ou le CA :
 
Array ( [0] => Array (  
[CLE_ID] => 100
[NOM] => REDFORD  
[PRENOM] => ROBERT
[AGE] => 18  
[SALAIRE] => 310000  
[CA] => 310  
)
[1] => Array (  
[CLE_ID] => 101
[NOM] => TOM
[PRENOM] => CRUISE
[AGE] => 20  
[SALAIRE] => 1160000  
[CA] => 1160  
)
[2] => Array (  
[CLE_ID] => 102
[NOM] => BOND
[PRENOM] => JAMES
[AGE] => 21  
[SALAIRE] => 510000  
[CA] => 510  
))

 
J'ai essayé :
asort($monTableau);" mais ça me trie le tableau sur le champ "CLE_ID", c'est pas ce que je cherche à faire évidemment.
asort($monTableau['NOM']) => Erreur
 
Si qqu'un peut m'aider. Désolé ça doit être trop simple mais là je bloque, j'arrive pas à trouver la bonne syntaxe.
Merci pour votre indulgence et pour votre aide éventuelle.
 
PS: Le tableau n'est pas de moi, il a peut être pas une bonne structure pour subir un tri par critères/colonnes ?!?

Reply

Marsh Posté le 12-12-2005 à 11:32:29   

Reply

Marsh Posté le 12-12-2005 à 11:49:47    

usort est ton ami...
 
un truc dans le genre:

Code :
  1. function sortName($a, $b)
  2. {
  3.    if ($a['NOM'] == $b['NOM']) {
  4.      return 0;
  5.    }
  6.    return ($a['NOM'] > $b['NOM']) ? -1 : 1;
  7. }


 
edit: je rajouterais des tests pour m'assurer que la clé existe pour a et b


Message édité par anapajari le 12-12-2005 à 11:50:22
Reply

Marsh Posté le 12-12-2005 à 13:38:14    

Bon, je crois que je n'ai plus qu'a prendre une journée pour travailler sur les tableaux parce que jpensais que ca serait vraiment plus simple avec toutes les fonctions _sort() que j'avais vu :-((.
Moralité, ne pas se fier aux apparences.
 
En tout cas merci pour ton aide et ta réponse !
Jvais potasser, le usort() en particulier.

Reply

Marsh Posté le 12-12-2005 à 15:45:27    

une journée pour faire un trie sur un tableau ? hein ? :lol:
 
si tu ne sais pas utiliser les # sort # uasort # uksort et # usort, fait un sort a toi genre un tri a bulle a la con ;)


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 12-12-2005 à 16:26:10    

Ouais une journée (au boulot donc en faisant pas que ça non plus :-)) parce que j'ai jamais manipulé des tableaux en PHP (c'est pas qu'une question de fonctions de tri) et que cela me semble pas spécialement intuitif pour l'instant.
Notamment avec les colonnes nommées ou pas nommées, l'histoire de mon tableau imbriqué, etc... enfin bref, un bon vieux tableau tout moisi en VB ça me parle plus qu'en PHP quoi !
En plus il y a bien 7/8 ans que j'ai pas développé (suis rouillé quoi)...donc bon.
Mci pour le conseil en tout cas. :-)

Reply

Marsh Posté le 12-12-2005 à 16:46:14    

tu peux faire un tableau moisi façon C en php si tu veux :D
 
genre $toto[0][0][0] ; :D


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 12-12-2005 à 17:39:48    

LOL jdois être trop mauvais (ha ouais vous l'aviez déjà déviné  :ange: ) , mais avec le test suivant je parviens pas aller chercher les valeurs .
Comment je fais pour aller chercher le salaire de James Bond par exemple en une ligne. Je pensais que ça ça marcherait :  
 
$monTableau[2]['SALAIRE']
 
Hé ben non. Donc soit c'est ma déclaration du Array qui est foireuse, soit je nage dans le potage (les 2 ptet bien même!).
 
$monTableau = Array (
0 => Array ( "CLE_ID" => 100, "NOM" => "REDFORD", "PRENOM" => "ROBERT", "AGE" => 18, "SALAIRE" => 310000, "CA" => 310),
1 => Array (  "CLE_ID" => 101, "NOM" => "TOM", "PRENOM" => "CRUISE", "AGE" => 20, "SALAIRE" => 1160000, "CA" => 1160),
2 => Array ( "CLE_ID" => 102, "NOM" => "BOND", "PRENOM" => "JAMES", "AGE" => 21, "SALAIRE" => 510000, "CA" => 510)
);


Message édité par groudier le 12-12-2005 à 17:45:20
Reply

Marsh Posté le 12-12-2005 à 17:45:19    

echo $monTableau[2]["SALAIRE"] ;
 
Il est bien payé james bond :D


Message édité par chaced le 12-12-2005 à 17:59:17

---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 12-12-2005 à 17:58:14    

OKAYYYYY  
 
[:alex_] [:alex_] [:alex_]
 
Bon j'avais la bonne syntaxe c'est déjà ça, ta réponse m'a super aidé en cela !
En fait mon echo c'était ça :
 
echo "$monTableau[2]["SALAIRE"]";
 
J'ai récup du code et j'ai pas enlevé les "" qui servait à afficher "$monTableau[2]["SALAIRE"] = " .
Et comme jsuis gros noob en PHP j'ai pas cherché à comprendre même si au début ça m'a semblé bizarre de mettre des guillemets autour du nom d'une variable pour afficher son contenu.
 
Bref une erreur d'inattention du à ma grande inexpérience du PHP.
Et surtout [:cyrille53].
Mci pour ton précieux coup de main l'air de rien !

Reply

Marsh Posté le 12-12-2005 à 17:59:51    

erreur d'innatention surtout oui :D (ps j'avais oubliais le $ au tableau moi :D)


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 12-12-2005 à 17:59:51   

Reply

Marsh Posté le 13-12-2005 à 16:10:35    

moi j'trouve ton tableau bien que compliqué très bien, j'serais plutôt passé par une structure, voire carément un objet( objet=bonheur parce que fonctions intégrées pour plus tard!!!!). Et un p'tit tri bulle est si vite fait en cherchant des tutos sur les tris ça doit strouver facilement genre http://www.phpfacile.com

Reply

Marsh Posté le 13-12-2005 à 23:27:44    

En tout cas j'ai beaucoup de mal à me séparer des bonnes vieilles syntaxes de type indiciaires : tab(1,2)=... , tab(10)=...
Ca finira par rentrer, mais pour l'instant c'est pas intuitif pour moi.
Pour le tri j'ai fini par trouver ce qu'il me fallait.
Merci en tout cas pour la validation de la structure du tableau  :jap:  

Reply

Sujets relatifs:

Leave a Replay

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