Maison  >  Article  >  développement back-end  >  Tri avancé des tableaux PHP : comparateurs personnalisés et fonctions anonymes

Tri avancé des tableaux PHP : comparateurs personnalisés et fonctions anonymes

王林
王林original
2024-04-27 11:09:02502parcourir

En PHP, il existe deux manières de trier un tableau dans un ordre personnalisé : Comparateur personnalisé : implémentez l'interface Comparable et spécifiez les règles de comparaison des deux objets. Fonction anonyme : créez une fonction anonyme en tant que comparateur personnalisé pour comparer deux objets par rapport à un critère.

PHP 数组高级排序:自定义比较器和 匿名函数

Tri avancé PHP des tableaux : comparateurs personnalisés et fonctions anonymes

En PHP, trier un tableau dans un ordre personnalisé nécessite des fonctionnalités au-delà de ce que les fonctions de tri standard peuvent fournir. Les comparateurs personnalisés et les fonctions anonymes fournissent un mécanisme de tri plus flexible que les fonctions intégrées telles que sort() et rsort(). sort()rsort() 等内置函数更灵活的排序机制。

自定义比较器

自定义比较器是一种实现 Comparable 接口的类,它定义了如何比较两个对象。实现 compareTo()

Comparateur personnalisé

Un comparateur personnalisé est une classe qui implémente l'interface Comparable, qui définit comment comparer deux objets. Implémentez la méthode compareTo() pour spécifier quel objet est considéré comme supérieur, inférieur ou égal à un autre objet.

class CustomComparator implements Comparable {
    public function compareTo($a, $b): int {
        if ($a == $b) {
            return 0;
        }
        return $a > $b ? 1 : -1;
    }
}

Fonctions anonymes

Les fonctions anonymes sont des fonctions sans nom qui peuvent être créées à la volée et transmises en tant que paramètres. Ils sont souvent utilisés pour créer des comparateurs personnalisés :

$comparator = function($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return $a > $b ? 1 : -1;
};

Exemple pratique

Considérons un tableau contenant les noms et les scores des étudiants :

$students = [
    ['name' => 'Alice', 'score' => 85],
    ['name' => 'Bob', 'score' => 90],
    ['name' => 'Carol', 'score' => 80],
];
Approche du comparateur personnalisé

$comparator = new CustomComparator();
usort($students, [$comparator, 'compareTo']);

🎜Approche des fonctions anonymes🎜🎜
usort($students, function($a, $b) {
    return $a['score'] <=> $b['score'];
});
🎜Au-dessus du code va trier le tableau par scores des élèves, du plus petit au plus grand : 🎜
[
    ['name' => 'Carol', 'score' => 80],
    ['name' => 'Alice', 'score' => 85],
    ['name' => 'Bob', 'score' => 90],
];

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn