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

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

Patricia Arquette
Freigeben: 2024-12-25 04:51:12
Original
354 Leute haben es durchsucht

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

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],
];
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

Jetzt können wir usort verwenden, um das Array zu sortieren:

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

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:

  • Anonyme Funktionen: Damit können Sie die Vergleichsfunktion inline definieren, z. B.:
usort($array, function($a, $b) {
    return strcmp($a->name, $b->name);
});
Nach dem Login kopieren
  • Innerhalb einer Klasse: Wenn Sie eine Klasse haben, können Sie eine Vergleichsmethode definieren und diese an usort übergeben, z.B.:
class MyComparator {
    public function cmp($a, $b) {
        return strcmp($a->name, $b->name);
    }
}

$array = usort($array, [new MyComparator(), 'cmp']);
Nach dem Login kopieren
  • Pfeilfunktionen (PHP 7.4): Diese bieten eine übersichtliche Möglichkeit, Vergleichsfunktionen zu definieren, z.B.:
usort($array, fn($a, $b) => strcmp($a->name, $b->name));
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

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