【发布时间】:2016-10-31 19:28:40
【问题描述】:
我有这个array:-
array (size=8)
0 =>
array (size=2)
'date' => string '17/05/2016 00:00:00' (length=19)
'reason' => string 'DNA' (length=3)
1 =>
array (size=2)
'date' => string '10/05/2016 00:00:00' (length=19)
'reason' => string 'UTA' (length=3)
2 =>
array (size=2)
'date' => string '03/05/2016 00:00:00' (length=19)
'reason' => string 'DNA' (length=3)
3 =>
array (size=2)
'date' => string '26/04/2016 00:00:00' (length=19)
'reason' => string 'true' (length=4)
4 =>
array (size=2)
'date' => string '31/05/2016 00:00:00' (length=19)
'reason' => string 'true' (length=4)
5 =>
array (size=2)
'date' => string '24/05/2016 00:00:00' (length=19)
'reason' => string 'true' (length=4)
6 =>
array (size=2)
'date' => string '07/06/2016 00:00:00' (length=19)
'reason' => string 'true' (length=4)
7 =>
array (size=2)
'date' => string '14/06/2016 00:00:00' (length=19)
'reason' => string 'true' (length=4)
我想按“日期”排序
我尝试了以下两种方法,但结果(下)排序不正确。
usort($course, function($a, $b) {
return $a['date'] - $b['date'];
});
_______________________________
function date_compare($a, $b)
{
$t1 = strtotime($a['date']);
$t2 = strtotime($b['date']);
return $t1 - $t2;
}
usort($course, 'date_compare');
这是“排序”数组
array (size=8)
0 =>
array (size=2)
'date' => string '24/05/2016 00:00:00' (length=19)
'reason' => string 'true' (length=4)
1 =>
array (size=2)
'date' => string '14/06/2016 00:00:00' (length=19)
'reason' => string 'true' (length=4)
2 =>
array (size=2)
'date' => string '31/05/2016 00:00:00' (length=19)
'reason' => string 'true' (length=4)
3 =>
array (size=2)
'date' => string '26/04/2016 00:00:00' (length=19)
'reason' => string 'true' (length=4)
4 =>
array (size=2)
'date' => string '17/05/2016 00:00:00' (length=19)
'reason' => string 'DNA' (length=3)
5 =>
array (size=2)
'date' => string '03/05/2016 00:00:00' (length=19)
'reason' => string 'DNA' (length=3)
6 =>
array (size=2)
'date' => string '07/06/2016 00:00:00' (length=19)
'reason' => string 'true' (length=4)
7 =>
array (size=2)
'date' => string '10/05/2016 00:00:00' (length=19)
'reason' => string 'UTA' (length=3)
【问题讨论】:
-
数据是否来自数据库?如果是这样,为什么不先通过mysql排序?
-
First
usort()将不起作用,因为您正在比较字符串,而不是日期。所以你的意思是date_compare功能不起作用?使用 PHPFiddle 提供示例:sandbox.onlinephpfunctions.com -
String
24/05/2016 00:00:00无法转换为日期时间,因为 strtotime 预计月份在前。使用从格式创建 - php.net/manual/en/datetime.createfromformat.php -
@DarraghEnright - 它不是重复的,因为那是我从中获得第二个功能的地方
-
数据不是直接来自数据库,在到达这一点之前已经处理过了,所以我不能对查询进行排序谢谢。
标签: php