按日期對物件陣列進行排序
在PHP 中,我們經常遇到需要按特定屬性對物件陣列進行排序的情況,例如日期欄位。這使我們能夠按時間順序顯示或操作資料。
按日期重新排列物件
考慮下列物件數組,其中每個物件代表一條帶有日期屬性:
<code class="php">$array = [ 495 => (object)['date' => '2009-10-31 18:24:09'], 582 => (object)['date' => '2010-2-11 12:01:42'], ];</code>
要按日期屬性升序(最舊的在前)對這些物件進行排序,我們可以使用strtotime() 函數和usort() 函數。
自訂比較函數
要使用 usort(),我們需要定義一個自訂比較函數,根據兩個物件的日期屬性來比較它們。以下程式碼定義了一個函數,該函數從第二個物件的日期的時間戳記中減去第一個物件的日期的時間戳記(使用strtotime() 轉換):
<code class="php">function cb($a, $b) { return strtotime($a['date']) - strtotime($b['date']); }</code>
使用usort() 對數組進行排序
一旦我們有了比較函數,我們就可以在數組上調用usort(),並將比較函數作為第二個參數傳遞:
<code class="php">usort($array, 'cb');</code>
範例
使用前面的範例數組,產生的排序數組將是:
<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 及以上>
對於PHP 5.3以上,可以使用更簡單的匿名函數作為比較函數:<code class="php">usort($array, function($a, $b) { return strtotime($a['date']) - strtotime($b['date']); });</code>
以上是如何在 PHP 中按日期對物件數組進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!