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.
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'interfaceComparable
, 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], ];
$comparator = new CustomComparator(); usort($students, [$comparator, 'compareTo']);
usort($students, function($a, $b) { return $a['score'] <=> $b['score']; });
[ ['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!