按日期對物件陣列進行排序
在PHP 中,我們經常遇到需要按特定屬性對物件陣列進行排序的情況,例如日期欄位。這使我們能夠按時間順序顯示或操作資料。
按日期重新排列物件
考慮以下物件數組,其中每個物件代表一條帶有日期屬性:
$array = [
495 => (object)['date' => '2009-10-31 18:24:09'],
582 => (object)['date' => '2010-2-11 12:01:42'],
];
要按日期屬性按升序(最舊的在前)對這些物件進行排序,我們可以利用 strtotime() 函數和 usort() 函數。
自訂比較函數
要使用 usort(),我們需要定義一個自訂比較函數,根據兩個物件的日期屬性來比較它們。以下程式碼定義了一個函數,該函數從第二個物件的日期的時間戳記中減去第一個物件的日期的時間戳記(使用strtotime() 轉換):
function cb($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
}
使用usort() 對陣列進行排序
一旦我們有了比較函數,我們就可以對陣列呼叫usort(),將比較函數作為第二個參數:
usort($array, 'cb');
範例
使用前面的範例數組,結果排序後的陣列將是:
[
495 => (object)['date' => '2009-10-31 18:24:09'],
582 => (object)['date' => '2010-2-11 12:01:42'],
]
PHP 5.3以上版本
對於PHP 5.3以上版本,可以使用較簡單的匿名函數作為比較函數:
usort($array, function($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
});
這種方法實作了與前一個方法相同的排序結果。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3