php - 如何在php中对日期数组进行排序?

标签 php arrays sorting date

我是 php 新手,我有 php 日期数组

[0] => 11-01-2012
[1] => 01-01-2014
[2] => 01-01-2015
[3] => 09-02-2013
[4] => 01-01-2013

我想这样排序:

[0] => 11-01-2012
[1] => 01-01-2013
[2] => 09-02-2013
[3] => 01-01-2014
[4] => 01-01-2015

我使用 asort 但不工作。

最佳答案

如果日期是“Mysql”格式(Y-m-dY-m-d H:i:s),那么您可以立即对数组进行排序,无需特殊操作:

$arr = ["2019-11-11", "2019-10-10","2019-11-11", "2019-09-08","2019-05-11"];
sort($arr);

如果日期被本地化或格式化(你应该避免,只在输出前格式化日期)你必须使用自定义排序函数,例如 usort() ,这将在比较之前将日期转换为可排序的格式。

将日期转换为可排序格式的最简单方法是使用 strtotime() 将其转换为 unix 时间戳功能:

$arr = ['11/01/2012', '03/16/2022', '12/26/2021', '01/01/2014', '09/02/2013'];
usort($arr, function ($a, $b) {
    return strtotime($a) - strtotime($b);
});
print_r($arr);

demo中查看结果

但是,可能存在缺陷,因为在不同的国家/地区,相同的日期格式可能意味着不同的日期。您的示例格式正是这种情况,如果日期为 ['03-16-2022', '12-26-2021', '06-06-2022'],则上述函数将返回错误结果。因此,最好明确定义日期格式,如 this answer 中所述。

关于php - 如何在php中对日期数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40462778/

相关文章:

c++ - Memset 枚举数组值设置不正确 (C/C++)

java - 在 switch 语句退出选项中尝试 catch

java - 使用可比较的对象数组列表对对象进行排序

php - 如何访问 Django 中的 http 数组参数?

php - 类中的 require_once()

javascript - 在 Javascript 中使用 try-catch-finally block 捕获 JSON 解析异常不起作用

java - 基于两个数组按值对数组进行排序

c - C 中的合并排序不起作用

Java Set - 如何根据名称列表进行排序

php - '/' 以外的共享主机页面上的 Laravel 未显示