Trier 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 un tableau

Re: Trier un tableau

par AB » 29 mars 2010, 23:16

C'est bon alors ?
Puisque cela semble le cas tu peux accepter ta dernière réponse pour dire que c'est résolu, ainsi ceux qui cherchent parmi les messages sauront que ce topic contient une solution :wink:

Re: Trier un tableau

par musatge » 29 mars 2010, 19:41

J'ai galéré pour trouver la bonne fonction pour le bon tableau mais finalement j'ai trouvé une solution avec ksort():

Code : Tout sélectionner

<?php require 'admin/includes/connexion.php'; $nuage=""; $sql = mysql_query('SELECT etiquettes FROM articles') or die(); while ($rang = mysql_fetch_assoc($sql)) { $nuage=$nuage.",".$rang['etiquettes']; } $nuage=substr($nuage, 1); $nuage = explode(',',$nuage); // explode() permet de découper la chaîne $nuage par rapport aux virgules $nuage_compteur=array(); // préparer un tableau vide pour mettre les compteurs foreach($nuage as $etiquette) { $etiquette=trim($etiquette); if (isSet($nuage_compteur[$etiquette])) // si déjà défini on incrémente $nuage_compteur[$etiquette]++; else // sinon on initialise $nuage_compteur[$etiquette] = 1; } ksort($nuage_compteur); // Trie le tableau array suivant les clés, en maintenant la correspondance entre les clés et les valeurs. echo "<ul>"; foreach($nuage_compteur as $etiquette=>$nombre) { echo "<li> $nombre $etiquette</li>"; } echo "</ul>"; ?>

Re: Trier un tableau

par AB » 18 mars 2010, 01:17

Puisque ton résultat est un tableau, les fonctions de tri sur les tableaux sont ici

Re: Trier un tableau

par musatge » 17 mars 2010, 19:00

Ma description était incomplète, le champ étiquettes de la table articles contient pour chaque articles plusieurs étiquettes, je les concatène dans $nuage, je compte combien de fois chaque étiquette est répétée et j'enlève les doublons. J'ai donc dans $nuage_compteur, si j'ai bien compris, pour chaque étiquette le nombre de répétition. J'affiche ce tableau dans le désordre, je voudrais l'afficher avec les étiquettes classées par ordre alphabétique.
Cordialement

Re: Trier un tableau

par Skikit » 17 mars 2010, 16:28

Salut,

Par le Sql...
$sql = mysql_query('SELECT etiquettes FROM articles order by etiquettes asc')

Trier un tableau

par musatge » 17 mars 2010, 16:13

Bonjour
Je sollicite une nouvelle fois votre aide.
Je récupère les mots contenus dans le champ etiquettes de la table articles et je compte les occurences de chaque mot pour réaliser un nuage de tags. J'ai écrit le script suivant:

Code : Tout sélectionner

<?php require 'admin/includes/connexion.php'; $nuage=""; $sql = mysql_query('SELECT etiquettes FROM articles') or die(); while ($rang = mysql_fetch_assoc($sql)) { $nuage=$nuage.",".$rang['etiquettes']; } $nuage=substr($nuage, 1); $nuage = explode(',',$nuage); // découper la chaîne par rapport aux virgules avec explode() $nuage_compteur=array(); // préparer un tableau vide pour mettre les compteurs foreach($nuage as $etiquette) { $etiquette=trim($etiquette); if (isSet($nuage_compteur[$etiquette])) // si déjà défini on incrémente $nuage_compteur[$etiquette]++; else // sinon on initialise $nuage_compteur[$etiquette] = 1; } foreach($nuage_compteur as $etiquette=>$nombre) { echo "<li> $nombre $etiquette</li>"; } echo "</ul>"; ?>
Ce script m'affiche un tableau du type (nombre d'étiquettes, étiquette):
2 posset
2 ullum
1 quoque
...
Je voudrais afficher les étiquettes par ordre alphabétique. J'ai essayé la fonction asort() mais soit j'obtiens un message d'erreur, soit je classe le tableau sur le nombre d'étiquettes et non sur les étiquettes elles-même. Autrement dit comment peut-on classer un tableau sur la deuxième colonne.
Cordialement