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!