Ordonner des variables sans passer par une table

Eléphant du PHP | 445 Messages

28 avr. 2006, 15:01

Bonjour,

Je voulais savoir s'il était possible, après avoir pris des nombres provenant d'une table, de tous les comparer, et de les mettre dans un tableau, ordonné du plus grand au plus petit, sans devoir les envoyer dans une table pour cela.
Exemple : dans une première colonne, le n° d’ordre, dans la deuxième le nom de la variable

Bien sur, je compte les ré-utiliser ensuite, donc comment les rappelle-t-on une fois rangés ?

Merci d'avance ;)

chris3719
Invité n'ayant pas de compte PHPfrance

28 avr. 2006, 15:10

salut,

imaginons que le nom de ta variable se trouve dans $t[$i]['nom_var'], tu peux recup sa valeur avec $$t[$i]['nom_var']

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 avr. 2006, 15:12

Quand tu parles de table, tu veux parler de table temporaire SQL ?

Comment est-ce que tu tri tes données ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 80 Messages

28 avr. 2006, 15:34

Je travaille avec lui ^^'

Nous voudrions classer les donner dans un array temporaire directement sous php, sans devoir faire plusieurs chargements de page

Je cherche justement à savoir comment trier mes données, sachant que je les veux dans le tableau en DESC ;)

Merci
XaV...
Webmaster des Larmes du Chaos

Eléphant du PHP | 493 Messages

28 avr. 2006, 15:37

Ce n'est pas très clair votre machin :?
Ce que je peux vous dire c'est soit de faire le traitement directement via MySQL : ORDER BY votre_champ DESC, soit par PHP avec rsort()

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 avr. 2006, 15:38

si vous voulez triez les données présentes dans un tableau PHP, il existe une série de fonction de tri sur les tableaux :
sort()
rsort()
arsort()
array_multisort()
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 80 Messages

29 avr. 2006, 00:34

Bonsoir,

Le problème c'est que je ne vois pas comment rapeller les données du tableau en fonction de leur ordre moa :oops:

Code : Tout sélectionner

$tablo = array($var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9,$var15); $tablobis = rsort($tablo);
Mettons que l'ordre soit simplement le suivant :
$var15;$var9;$var8;$var7;$var6;$var5;$var4;$var3;$var2;

Pour rapeller la deuxième par exemple, dois-je faire pour la rapeller :
$tablobis[2] ?

Et sinon, est-il possible d'associer en plus une autre colonne contenant une autre information, non triée, utiliser krsort est la bonne solution ?

Merci pour votre réponse ;)
XaV...
Webmaster des Larmes du Chaos

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 avr. 2006, 10:19

Mettons que l'ordre soit simplement le suivant :
$var15;$var9;$var8;$var7;$var6;$var5;$var4;$var3;$var2;

Pour rapeller la deuxième par exemple, dois-je faire pour la rapeller :
$tablobis[2] ?
Toutafé ! (quoi qu'en l'occurence, cela te retournera la 3ème, l'index commençant à zéro :))
echo $tablobis[0]; // affiche la valeur de $var15
echo $tablobis[1]; // affiche la valeur de $var9
echo $tablobis[2]; // affiche la valeur de $var8
...
echo $tablobis[count($tablobis)-1]; // affiche la valeur de $var2
Pour l'autre question, si ta seconde colonne n'est pas liée à la première (vu que non triée) pourquoi vouloir la mettre dans le même tableau ? fais en un second, ca sera beaucoup plus simple à mon avis :)

Eléphant du PHP | 80 Messages

01 mai 2006, 02:07

Bonjour,

Je viens de penser à quelque chose encore : est-il possible de faire ceci :
- on compare les variables entre elles, on les classe dans l'ordre décroissant avec krsort()
- on récupère le nom de la variable, c'est à dire si la variable c'est $chien, on récupère "chien" pour une vérif ultérieure, au lieu d'un nombre, pour éviter que lors d'un if qui suivrait, le nombre ne puisse correspondre à la fois aux chats et aux chiens.

En gros, je voudrais transformer le nom de la variable en une chaine de caractères pouvant être utilisée par la suite, tout en sachant qu'elle a été au préalable classée en décroissant.

Vous me suivez ? Si oui, comment faire ?

Merci de votre patience
XaV...
Webmaster des Larmes du Chaos