如何使用 PHP 對陣列中的時間戳進行排序,保留鍵名?

WBOY
發布: 2024-05-03 22:36:01
原創
711 人瀏覽過

可以透過 uasort() 函數對陣列進行排序,保留其鍵名。若要基於時間戳排序,可以使用自訂比較函數 compare_timestamps,該函數比較元素中的 timestamp 欄位。在實戰案例中,使用此比較函數對陣列中的時間戳進行排序,保留了鍵名,並按下從小到大輸出排序後的陣列。

如何使用 PHP 对数组中的时间戳进行排序,保留键名?

在PHP 中按時間戳記對陣列進行排序,保留鍵名

在PHP 中,我們可以使用uasort() 函數對陣列進行排序,同時保留其鍵名。這是排序數組的語法:

uasort($array, $sort_function);
登入後複製

其中,$array 是要排序的數組,$sort_function 是使用者定義的比較函數。

排序比較函數

排序比較函數必須遵循特定的格式:

function sort_function(mixed $a, mixed $b): int
登入後複製

它需要接受兩個參數,$a$b,這些參數代表要比較的陣列元素。函數應該會傳回以下值:

  • -1:如果 $a 應該排在 $b 之前。
  • 0:如果 $a 和 $b 相等。
  • 1:如果 $a 應該排在 $b 之後。

基於時間戳排序

要基於時間戳對數組進行排序,我們可以使用以下排序比較函數:

function compare_timestamps(mixed $a, mixed $b): int
{
    return $a['timestamp'] - $b['timestamp'];
}
登入後複製

此函數比較數組元素中的timestamp 字段,並傳回適當的值以將元素按順序放置。

實戰案例

以下是使用我們的排序函數對陣列中的時間戳進行排序的實戰案例:

$array = [
    'item1' => ['timestamp' => 1593475200],
    'item2' => ['timestamp' => 1601260800],
    'item3' => ['timestamp' => 1584230400],
];

uasort($array, 'compare_timestamps');

print_r($array);
登入後複製

輸出:

Array
(
    [item3] => Array
        (
            [timestamp] => 1584230400
        )

    [item1] => Array
        (
            [timestamp] => 1593475200
        )

    [item2] => Array
        (
            [timestamp] => 1601260800
        )
)
登入後複製

如你所見,數組已按時間戳順序排序,同時保留了鍵名。

以上是如何使用 PHP 對陣列中的時間戳進行排序,保留鍵名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!