如何在 PHP 中按日期對物件數組進行排序?

Linda Hamilton
發布: 2024-10-26 03:36:03
原創
1083 人瀏覽過

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

按日期對物件陣列進行排序

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板