Sortieren von Objekten in einem Array nach Eigenschaften
Wenn Sie mit Arrays von Objekten arbeiten, müssen Sie diese möglicherweise auf der Grundlage einer bestimmten Eigenschaft organisieren Feld oder Grundstück. In diesem Artikel geht es um die Frage, wie man ein Array von Objekten nach einem bestimmten Feld wie Name oder Anzahl sortiert.
Um dies zu erreichen, stellt uns PHP die Funktion usort zur Verfügung. Es verwendet ein Array als erstes Argument und ein Callable als zweites Argument, das als Vergleichsfunktion dient. Diese Vergleichsfunktion sollte eine Ganzzahl zurückgeben, die das Ergebnis des Vergleichs angibt: -1, wenn das erste Objekt vor dem zweiten kommen sollte, 0, wenn sie gleich sind, und 1, wenn das zweite Objekt vor dem ersten kommen sollte.
Betrachten wir ein Beispiel mit einem Array von Objekten:
$array = [ (object) ['name' => 'Mary Jane', 'count' => 420], (object) ['name' => 'Johnny', 'count' => 234], (object) ['name' => 'Kathy', 'count' => 4354], ];
Um dieses Array nach dem Namensfeld zu sortieren, können wir eine Vergleichsfunktion definieren als folgt:
function cmp($a, $b) { return strcmp($a->name, $b->name); }
Jetzt können wir usort verwenden, um das Array zu sortieren:
usort($array, 'cmp');
Dadurch wird das Array in aufsteigender Reihenfolge des Namensfelds sortiert.
Alternative Ansätze
Zusätzlich zur herkömmlichen Vergleichsfunktion bietet PHP verschiedene alternative Ansätze für Sortierung:
usort($array, function($a, $b) { return strcmp($a->name, $b->name); });
class MyComparator { public function cmp($a, $b) { return strcmp($a->name, $b->name); } } $array = usort($array, [new MyComparator(), 'cmp']);
usort($array, fn($a, $b) => strcmp($a->name, $b->name));
Vergleich von Zahlen Felder
Beim Vergleich von numerischen Feldern, wie dem Zählfeld in unserem Beispiel, können Sie die folgende Vergleichsfunktion verwenden:
fn($a, $b) => $a->count - $b->count
Alternativ führte PHP 7 den Spaceship-Operator ( <=>), die für solche Vergleiche verwendet werden können, z. B.:
fn($a, $b) => $a->count <=> $b->count
Das obige ist der detaillierte Inhalt vonWie sortiere ich ein Array von Objekten nach einer bestimmten Eigenschaft in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!