Menu
Coddy logo textTech

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.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

challenge icon

Défi

Facile

Vous 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);
?>
quiz iconTestez-vous

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