Trier par valeurs décroissantes sur clé dans un tableau.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Trier par valeurs décroissantes sur clé dans un tableau.

par spirou » 11 mars 2006, 17:31

Merci de ton explication, c'est un peu plus clair maintenant.

:wink:

par Hubert Roksor » 11 mars 2006, 17:21

Tout dépend de la valeur de retour. Une variable renvoit sa propre valeur, donc dans $a = $b la valeur de $b est affectée à $a. Pour les fonctions, ça dépend de chaque fonction. Généralement, les fonctions renvoient un résultat mais ksort() et les autres sort() sont un peu des exceptions à la règles. Au lieu de renvoyer leur résultat, ils modifient directement les variables qu'on leur passe (on appelle ça passer "par référence") et ils renvoient TRUE ou FALSE selon s'ils se sont exécuté correctement ou non.

Je te rassure, ce genre de fonctions est relativement rare dans PHP, et même moi je me fais encore avoir de temps à autres. La morale de l'histoire: il faut toujours regarder dans le manuel pour savoir ce que retourne une fonction.

par spirou » 11 mars 2006, 17:06

Merci, ça fonctionne :P

Mais j'ai pas compris la subtilité de la chose.

Pourquoi
$votes_dec = krsort($votes, SORT_NUMERIC);
Retourne true, alors que
$new = $votes;
Affectes bien le tableau de $votes à $new ?

par manmachine » 11 mars 2006, 16:52

C'est normal ksort() te retourne true donc ca revient à ca

$votes = true;

d'ou ton 1

tu dois procéder comme ca

Code : Tout sélectionner

$votes = array($tt_pour => 'Pour', $tt_contre => 'Contre', $tt_neutre => 'Neutre'); ksort($votes, SORT_NUMERIC); print_r($votes);

Trier par valeurs décroissantes sur clé dans un tableau.

par spirou » 11 mars 2006, 16:38

Bonjour à tous !!

Je suis de nouveau confronté à un petit problème que je ne sais comment résoudre...

Par l'intermédiaire d'un petit sondage, j'enregistre les votes dans une table, je récupère les résultats pour les afficher sous formes d'images sur ma page, je souhaite classer les résultats par ordre décroissant sur mon image.

J'ai donc fait un array avec une association clé, valeur :
$votes = array($tt_pour => 'Pour', $tt_contre => 'Contre', $tt_neutre => 'Neutre');
Les clés représentent des numériques (pourcentage par rapport au total), j'ai utilisé des valeurs pour garder une relation après le classement décroissant.

Il faut donc que je classe seulement les clés de la plus grande à la plus petite, j'ai donc fait :
$votes = ksort($votes, SORT_NUMERIC);
print_r($votes);
Mais ça ne fonctionne pas :?
J'obtiens avec le print_r la valeur de 1.

Je ne comprends pas...