Maison >développement back-end >tutoriel php >Comment puis-je trier un tableau d'objets en PHP par une propriété spécifique ?

Comment puis-je trier un tableau d'objets en PHP par une propriété spécifique ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-27 03:08:17556parcourir

How Can I Sort an Array of Objects in PHP by a Specific Property?

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!

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