Maison >développement back-end >tutoriel php >Comment puis-je trier un tableau d'objets en PHP par une propriété spécifique ?
Tri d'un tableau d'objets par propriété
Un tableau d'objets peut être rencontré dans divers scénarios de programmation. Ces objets possèdent plusieurs propriétés, telles que le nom et le nombre. Organiser ces objets en fonction d'une propriété spécifique peut souvent s'avérer utile.
Personnalisation de la fonction de comparaison : usort
PHP fournit la fonction usort pour trier les tableaux. Cette fonction permet de personnaliser la fonction de comparaison utilisée pour le tri, permettant de préciser la propriété selon laquelle les objets seront ordonnés.
La syntaxe de usort est la suivante :
usort($array, $compare_function)
où $array est le tableau d'objets à trier et $compare_function est une fonction appelable qui définit la logique de comparaison.
Exemple : Trier les objets par nom
Considérez le tableau d'objets suivant :
$array = [ (object) ['name' => 'Mary Jane', 'count' => 420], (object) ['name' => 'Johnny', 'count' => 234], (object) ['name' => 'Kathy', 'count' => 4354], ... ];
Pour trier le tableau par nom dans l'ordre croissant, définissez la fonction de comparaison suivante :
function cmp($a, $b) { return strcmp($a->name, $b->name); }
Cette fonction compare les noms de deux objets à l'aide de la fonction strcmp, qui renvoie 1 si $a->name est supérieur à $b->name, -1 s'il est inférieur à et 0 s'ils sont égaux.
Enfin, invoquez usort avec la fonction de comparaison pour trier le tableau :
usort($array, 'cmp');
Options de comparaison alternatives
En plus d'utiliser des fonctions de comparaison personnalisées, usort prend en charge diverses autres méthodes pour définir la logique de comparaison, comprenant :
Fonctions anonymes (PHP 5.3) :
usort($array, function($a, $b) { return strcmp($a->name, $b->name); });
Classe méthodes:
usort($array, array($this, "cmp"));
Fonctions fléchées (PHP 7.4):
usort($array, fn($a, $b) => strcmp($a->name, $b->name));
Tri des valeurs numériques
Lors du tri numérique propriétés, telles que le nombre, vous pouvez utiliser l'opérateur du vaisseau spatial (<=>):
usort($array, fn($a, $b) => $a->count <=> $b->count);
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!