本文介绍了如何在php中按日期对数组进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个数组,我想按日期升序排序.我尝试了该站点的各种答案,但都无法正常工作.那我该怎么办呢?
I have this array and i want to sort it in ascending order by date. I tried various answers from this site but none of them is working right. So how can I do this?
Array
(
[0] => 09/01/2017
[1] => 08/01/2017
[2] => 07/01/2017
[3] => 06/01/2017
[4] => 05/01/2017
[5] => 04/01/2017
[6] => 03/01/2017
[7] => 02/01/2017
[8] => 01/01/2017
[9] => 12/12/2016
[10] => 11/12/2016
[11] => 10/12/2016
[12] => 09/12/2016
[13] => 25/12/2016
[14] => 24/12/2016
[15] => 23/12/2016
[16] => 26/12/2016
[17] => 28/12/2016
[18] => 30/12/2016
[19] => 29/12/2016
[20] => 22/12/2016
[21] => 27/12/2016
[22] => 15/12/2016
[23] => 16/12/2016
[24] => 14/12/2016
[25] => 13/12/2016
[26] => 17/12/2016
[27] => 18/12/2016
[28] => 20/12/2016
[29] => 19/12/2016
[30] => 21/12/2016
)
我正在使用PHP.这是我到目前为止尝试过的.此功能未按其他所有问题所述进行排序.
I am using PHP. This is what i tried so far. This function doesn't sort as mentioned in all other questions.
$data = array listed above;
function cmp($a, $b)
{
if (strtotime($a) == strtotime($b))
{
return 0;
}
return (strtotime($a) < strtotime($b)) ? -1 : 1;
}
uasort($data, "cmp");
推荐答案
因为您的字符串是dd/mm/yy
类型,所以strtotime
或date_create
不能直接使用.您可以使用DataTime
创建datetime
,然后使用datetime
比较运算符.
For you string is dd/mm/yy
type, cannot directly used by strtotime
or date_create
. You can use DataTime
to create the datetime
, then use the datetime
compare operators.
usort($array, function($a, $b){return DateTime::createFromFormat('d/m/Y', $a) > DateTime::createFromFormat('d/m/Y', $b);});
这篇关于如何在php中按日期对数组进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!