Trier les tableaux associatifs par valeur
Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 22 sur 68.
Lorsque vous travaillez avec des tableaux associatifs, vous avez souvent besoin de les trier par leurs valeurs tout en préservant les relations clé-valeur. PHP propose deux fonctions spécialisées à cet effet : asort() pour l'ordre croissant et arsort() pour l'ordre décroissant.
Voici comment asort() fonctionne pour trier par valeurs dans l'ordre croissant :
<?php
$students = [
"Alice" => 85,
"Bob" => 92,
"Charlie" => 78,
"Diana" => 96
];
asort($students);
print_r($students);
// Affiche : Array ( [Charlie] => 78 [Alice] => 85 [Bob] => 92 [Diana] => 96 )
?>Remarquez comment les notes sont désormais classées de la plus basse à la plus haute, mais le nom de chaque étudiant reste correctement associé à sa note. C'est l'avantage principal de asort() par rapport à un sort() classique : il préserve l'association entre les clés et les valeurs.
Pour l'ordre décroissant, arsort() fonctionne de manière similaire mais organise les valeurs de la plus élevée à la plus basse :
<?php
arsort($students);
print_r($students);
// Résultat : Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>Les deux fonctions modifient directement le tableau d'origine, tout comme leurs équivalents pour les tableaux indexés. Cela les rend parfaites pour organiser des données telles que les notes des étudiants, les prix des produits ou tout autre scénario où vous devez trier par valeur tout en gardant les paires clé-valeur intactes.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Défi
FacileVous recevrez une entrée : un tableau associatif de noms d'employés et leurs salaires au format JSON. Lisez l'entrée, convertissez la chaîne JSON en un tableau, utilisez arsort() pour trier les employés par salaire par ordre décroissant (du plus élevé au plus bas), et affichez le tableau trié en utilisant print_r().
Format d'entrée : Une ligne contenant un objet JSON avec les noms des employés comme clés et les salaires comme valeurs (exemple : {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000})
Sortie attendue : Le tableau associatif trié par ordre décroissant selon les valeurs de salaire, affiché en utilisant print_r()
Aide-mémoire
Utilisez asort() pour trier les tableaux associatifs par valeurs dans l'ordre croissant tout en préservant les relations clé-valeur :
<?php
$students = [
"Alice" => 85,
"Bob" => 92,
"Charlie" => 78,
"Diana" => 96
];
asort($students);
print_r($students);
// Outputs: Array ( [Charlie] => 78 [Alice] => 85 [Bob] => 92 [Diana] => 96 )
?>Utilisez arsort() pour trier les tableaux associatifs par valeurs dans l'ordre décroissant :
<?php
arsort($students);
print_r($students);
// Outputs: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>Les deux fonctions modifient directement le tableau d'origine et maintiennent l'association entre les clés et les valeurs, contrairement à la fonction sort() classique.
Essayez vous-même
<?php
// Lire l'entrée
$input = fgets(STDIN);
// Convertir le JSON en tableau associatif
$employees = (array)json_decode($input, true);
// TODO: Écrivez votre code ci-dessous pour trier le tableau par salaire par ordre décroissant
// Afficher le tableau trié
print_r($employees);
?>Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Fonctions avancées
Fonctions anonymesClosures et 'use'Fonctions fléchéesFonctions de rappelUtilisation de 'call_user_func'Fonctions variablesPassage par référenceFonctions récursivesRécapitulatif : Mélange de fonctions4Tableaux multidimensionnels
Créer un tableau 2DAccéder aux éléments d'un tableau 2DModifier les éléments d'un tableau 2DItérer avec des boucles imbriquéesTableaux associatifs 2DRécapitulatif : Exercice de grille simple2Manipulations avancées de tableaux
Ajouter avec 'array_push'Supprimer avec 'array_pop'Ajouter avec 'array_unshift'Supprimer avec 'array_shift'Fusionner des tableaux indexésFusionner des tableaux associatifsExtraire avec 'array_slice'Valeurs avec 'in_array'Clés avec 'array_search'Récapitulatif : Exercice Playlist3Tri des tableaux
Trier les tableaux indexés par ordre croissantTrier les tableaux indexés par ordre décroissantTrier les tableaux associatifs par valeurTrier les tableaux associatifs par cléTri par ordre naturelTri personnalisé avec 'usort'Récapitulatif : Tri d'un classement