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
Barbara StreisandOriginal
2024-12-27 03:08:17646Durchsuche

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)

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],
    ...
];

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);
}

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');

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);
    });
  • Klasse Methoden:

    usort($array, array($this, "cmp"));
  • Pfeilfunktionen (PHP 7.4):

    usort($array, fn($a, $b) => strcmp($a->name, $b->name));

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);

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!

Stellungnahme:
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