Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sortiere ich ein Array von Objekten nach Datum in PHP?

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 03:36:031006Durchsuche

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:

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

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

Benutzerdefinierte Vergleichsfunktion

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:

<code class="php">function cb($a, $b) {
    return strtotime($a['date']) - strtotime($b['date']);
}</code>

Sortieren des Arrays mit usort()

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

<code class="php">usort($array, 'cb');</code>

Beispiel

Unter Verwendung des Beispielarrays von früher wäre das resultierende sortierte Array:

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

PHP 5.3 und höher

Für PHP 5.3 und darüber kann eine einfachere anonyme Funktion als Vergleichsfunktion verwendet werden:

<code class="php">usort($array, function($a, $b) {
    return strtotime($a['date']) - strtotime($b['date']);
});</code>

Dieser Ansatz erzielt das gleiche Sortierergebnis wie der vorherige.

Das obige ist der detaillierte Inhalt vonWie sortiere ich ein Array von Objekten nach Datum 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