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

JHdebutant
Invité n'ayant pas de compte PHPfrance

13 mars 2008, 16:27

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;
				}
		}

d0m
Mammouth du PHP | 1141 Messages

13 mars 2008, 17:02

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().

Invité
Invité n'ayant pas de compte PHPfrance

13 mars 2008, 17:21

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.

Mammouth du PHP | 19672 Messages

13 mars 2008, 18:18

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à ?" ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: