Tri personnalisé avec 'usort'
Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 25 sur 68.
Lorsque les fonctions de tri intégrées de PHP ne répondent pas à vos besoins spécifiques, la fonction usort() offre une flexibilité ultime en vous permettant de définir exactement comment les éléments doivent être comparés et ordonnés. Cette fonction prend votre tableau et une fonction de comparaison personnalisée que vous écrivez pour déterminer la logique de tri.
La fonction de comparaison reçoit deux éléments du tableau et doit retourner un entier : un nombre négatif si le premier élément doit précéder le second, zéro s'ils sont égaux, ou un nombre positif si le premier doit suivre le second.
<?php
function compareByLength($a, $b) {
return strlen($a) - strlen($b);
}
$words = ["elephant", "cat", "butterfly", "dog"];
usort($words, "compareByLength");
print_r($words);
// Affiche : Array ( [0] => cat [1] => dog [2] => elephant [3] => butterfly )
?>Dans cet exemple, la fonction de comparaison calcule la différence entre les longueurs des chaînes. Lorsque strlen($a) - strlen($b) retourne un nombre négatif, cela signifie que la première chaîne est plus courte et doit apparaître en premier dans le tableau trié.
Comme les autres fonctions de tri PHP, usort() modifie directement le tableau d'origine. Cette fonction puissante ouvre des possibilités de tri selon n'importe quel critère que vous pouvez imaginer — qu'il s'agisse de la longueur d'une chaîne, d'une logique métier personnalisée ou de comparaisons complexes sur plusieurs champs.
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 de prix de produits au format JSON. Lisez l'entrée, convertissez la chaîne JSON en un tableau, créez une fonction de comparaison qui trie les prix par ordre croissant, utilisez usort() avec votre fonction de comparaison pour trier le tableau, et affichez le tableau trié en utilisant print_r().
Format d'entrée : Une ligne contenant un tableau JSON de nombres (exemple : [29.99,15.50,42.00,8.75,33.25])
Sortie attendue : Le tableau trié par ordre croissant de prix, affiché en utilisant print_r()
Aide-mémoire
La fonction usort() permet un tri personnalisé en acceptant une fonction de comparaison qui définit la logique de tri.
La fonction de comparaison reçoit deux éléments et doit retourner :
- Nombre négatif : le premier élément vient avant le second
- Zéro : les éléments sont égaux
- Nombre positif : le premier élément vient après le second
<?php
function compareByLength($a, $b) {
return strlen($a) - strlen($b);
}
$words = ["elephant", "cat", "butterfly", "dog"];
usort($words, "compareByLength");
print_r($words);
// Affiche : Array ( [0] => cat [1] => dog [2] => elephant [3] => butterfly )
?>Comme les autres fonctions de tri PHP, usort() modifie directement le tableau d'origine.
Essayez vous-même
<?php
// Lire l'entrée
$input = fgets(STDIN);
$prices = json_decode($input, true);
// TODO: Créer une fonction de comparaison et utiliser usort() pour trier le tableau
// Afficher le tableau trié
print_r($prices);
?>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