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
Patricia ArquetteOriginal
2024-12-25 04:51:12364Durchsuche

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

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:

  • Anonyme Funktionen: Damit können Sie die Vergleichsfunktion inline definieren, z. B.:
usort($array, function($a, $b) {
    return strcmp($a->name, $b->name);
});
  • 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']);
  • 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));

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!

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