我有一个数组:
'491-200' => string '13/03/2014 - Home(08:45 - 17:00)'
'494-202' => string '12/03/2014 - Restaurant(08:45 - 17:00)'
'498-200' => string '06/03/2014 - Cinema(08:45 - 17:00)'
'493-204' => string '05/03/2014 - Shop(08:45 - 17:00)'
'493-202' => string '26/02/2014 - Home(08:45 - 17:00)'
我需要按日期对其进行排序...我尝试使用explode()
从字符串中提取日期,将其转换并使用asort
,ksort
,{{ 1}},arsort
,krsort
等,但无法正确排序。看起来很有希望的usort
按照自己的方式对其进行排序,我甚至无法向自己解释......
usort
结果:
function cmp($x, $y)
{
$a = strtotime(explode("-", $x, 2)[0]);
$b = strtotime(explode("-", $y, 2)[0]);
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
请帮助!
由于
答案 0 :(得分:3)
strtotime
不能神奇地解析你抛出的任何和所有日期格式;它不知道xx/xx/xxxx
代表dd/mm/yyyy
。您需要创建时间戳以进行更明确的比较:
$a = DateTime::createFromFormat('d/m/Y', explode(' -', $x, 2)[0])->getTimestamp();