Page 1 sur 1

Classement des éléments d'un tableau par fréquence

Posté : 13 mars 2008, 16:27
par JHdebutant
Bonjour et merci à ceux qui pourront m'aider.
J'essaie de classer les éléments d'un tableau par leur fréquence mais je butte sur le classement.
Exemple : array(pomme,banane,pomme,orange,cerise,banane,pomme). L'objectif est d'obtenir l'ordre suivant : Pomme, banane,orange,cerise.
Je n'arrive pas appliquer le tri décroissant le tableau résultant ?

$tableau = array("pomme,banane,pomme,orange,cerise,banane,pomme");
		if (is_array($tableau)){
			$countelements = array_count_values ($tableau);
				foreach($countedelements as $k => $v) {
					echo $k;
				}
		}

Posté : 13 mars 2008, 17:02
par d0m
Salut,

d'après tes exemples tu veux faire 2 choses :
- obtenir un tableau d'arrivée une seule occurrence de chaque élément
- ranger ces éléments du plus nombreux dans le tableau de départ au moins nombreux.

Dans un premier temps il faut bien utiliser array_count_values()

Tu obtiens un tableau avec pour clé pomme, banane,... et comme valeur leur fréquence.
Il faut donc trier ce tableau dans l'ordre décroissant tout en gardant les clé.
Pour cela il y a la fonction asort()
Ensuite tu n'as plus qu'à récupérer les clés dans l'ordre grace à la fonction array_keys().

Posté : 13 mars 2008, 17:21
par Invité
Merci pour avoir bien décoder ma demande et merci pour "array_keys" que je ne connaissais pas.
Ce bout de code fonctionne correctement.
Désolé pour être toujours un newbi.

Posté : 13 mars 2008, 18:18
par Cyrano
Merci pour avoir bien décoder ma demande et merci pour "array_keys" que je ne connaissais pas.
Ce bout de code fonctionne correctement.
Désolé pour être toujours un newbi.
Sois pas désolé d'être un débutant, il faut que chacun passe un jour par ce stade. Si on m'avais parlé de PHP en 2001 (et avant), j'aurais probablement demandé "Ça bouffe quoi l'hiver ce bétail-là ?" ;)