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
Libérer: 2024-12-27 03:08:17
original
555 Les gens l'ont consulté

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)
Copier après la connexion

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],
    ...
];
Copier après la connexion

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);
}
Copier après la connexion

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');
Copier après la connexion

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);
    });
    Copier après la connexion
  • Classe méthodes:

    usort($array, array($this, "cmp"));
    Copier après la connexion
  • Fonctions fléchées (PHP 7.4):

    usort($array, fn($a, $b) => strcmp($a->name, $b->name));
    Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal