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!