„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie sortiere ich ein Array von Objekten nach Datum in PHP?

Wie sortiere ich ein Array von Objekten nach Datum in PHP?

Veröffentlicht am 09.11.2024
Durchsuche:473

How to Sort an Array of Objects by Date in PHP?

Sortieren eines Arrays von Objekten nach Datum

In PHP stoßen wir oft auf die Notwendigkeit, ein Array von Objekten nach einer bestimmten Eigenschaft zu sortieren, beispielsweise ein Datumsfeld. Dadurch können wir unsere Daten in chronologischer Reihenfolge anzeigen oder bearbeiten.

Objekte nach Datum neu anordnen

Betrachten Sie das folgende Array von Objekten, wobei jedes Objekt einen Datensatz mit a darstellt Datumseigenschaft:

$array = [
    495 => (object)['date' => '2009-10-31 18:24:09'],
    582 => (object)['date' => '2010-2-11 12:01:42'],
];

Um diese Objekte nach ihrer Datumseigenschaft in aufsteigender Reihenfolge (älteste zuerst) zu sortieren, können wir die Funktion strtotime() und die Funktion usort() verwenden.

Benutzerdefinierter Vergleich Funktion

Um usort() zu verwenden, müssen wir eine benutzerdefinierte Vergleichsfunktion definieren, die zwei Objekte basierend auf ihrer Datumseigenschaft vergleicht. Der folgende Code definiert eine Funktion, die den Zeitstempel (konvertiert mit strtotime()) des Datums des ersten Objekts vom Zeitstempel des Datums des zweiten Objekts subtrahiert:

function cb($a, $b) {
    return strtotime($a['date']) - strtotime($b['date']);
}

Sortieren des Arrays mit usort()

Sobald wir unsere Vergleichsfunktion haben, können wir usort() für das Array aufrufen und die Vergleichsfunktion als übergeben zweites Argument:

usort($array, 'cb');

Beispiel

Bei Verwendung des Beispiel-Arrays von zuvor wäre das resultierende sortierte Array:

[
    495 => (object)['date' => '2009-10-31 18:24:09'],
    582 => (object)['date' => '2010-2-11 12:01:42'],
]

PHP 5.3 und höher

Für PHP 5.3 und höher kann eine einfachere anonyme Funktion als Vergleichsfunktion verwendet werden:

usort($array, function($a, $b) {
    return strtotime($a['date']) - strtotime($b['date']);
});

Dieser Ansatz erzielt das gleiche Sortierergebnis wie der vorherige.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3