Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich ein Array von Objekten in PHP nach einer bestimmten Eigenschaft sortieren?

Wie kann ich ein Array von Objekten in PHP nach einer bestimmten Eigenschaft sortieren?

Barbara Streisand
Freigeben: 2024-12-27 03:08:17
Original
555 Leute haben es durchsucht

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

Sortieren eines Arrays von Objekten nach einer Eigenschaft

Ein Array von Objekten kann in verschiedenen Programmierszenarien angetroffen werden. Diese Objekte besitzen mehrere Eigenschaften, wie z. B. Name und Anzahl. Das Organisieren dieser Objekte basierend auf einer bestimmten Eigenschaft kann sich oft als nützlich erweisen.

Anpassen der Vergleichsfunktion: usort

PHP stellt die usort-Funktion zum Sortieren von Arrays bereit. Diese Funktion ermöglicht die Anpassung der zum Sortieren verwendeten Vergleichsfunktion, sodass Sie die Eigenschaft angeben können, nach der die Objekte sortiert werden.

Die Syntax für usort lautet wie folgt:

usort($array, $compare_function)
Nach dem Login kopieren

wobei $array das Array der zu sortierenden Objekte ist und $compare_function eine aufrufbare Funktion ist, die den Vergleich definiert Logik.

Beispiel: Objekte nach Namen sortieren

Betrachten Sie das folgende Array von Objekten:

$array = [
    (object) ['name' => 'Mary Jane', 'count' => 420],
    (object) ['name' => 'Johnny', 'count' => 234],
    (object) ['name' => 'Kathy', 'count' => 4354],
    ...
];
Nach dem Login kopieren

Um das Array nach Namen aufsteigend zu sortieren Um die Reihenfolge festzulegen, definieren Sie die folgende Vergleichsfunktion:

function cmp($a, $b) {
    return strcmp($a->name, $b->name);
}
Nach dem Login kopieren

Diese Funktion vergleicht die Namen zweier Objekte mithilfe der Funktion strcmp. Dies gibt 1 zurück, wenn $a->name größer als $b->name ist, -1, wenn es kleiner als ist, und 0, wenn sie gleich sind.

Rufen Sie schließlich usort mit der Vergleichsfunktion auf Sortieren Sie das Array:

usort($array, 'cmp');
Nach dem Login kopieren

Alternative Vergleichsoptionen

Zusätzlich zur Verwendung des benutzerdefinierten Vergleichs Funktionen unterstützt usort verschiedene andere Methoden zum Definieren der Vergleichslogik, darunter:

  • Anonyme Funktionen (PHP 5.3):

    usort($array, function($a, $b) {
      return strcmp($a->name, $b->name);
    });
    Nach dem Login kopieren
  • Klasse Methoden:

    usort($array, array($this, "cmp"));
    Nach dem Login kopieren
  • Pfeilfunktionen (PHP 7.4):

    usort($array, fn($a, $b) => strcmp($a->name, $b->name));
    Nach dem Login kopieren

Sortieren numerischer Werte

Beim Sortieren Für numerische Eigenschaften, wie z. B. die Anzahl, können Sie den Raumschiffoperator (<=>) verwenden:

usort($array, fn($a, $b) => $a->count <=> $b->count);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich ein Array von Objekten in PHP nach einer bestimmten Eigenschaft sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage