【发布时间】:2017-09-14 16:52:49
【问题描述】:
我有一个数组,它的键是日期,我想按升序排序。我尝试使用 ksort() 和其他没有成功的排序方法对其进行排序。用 usort() 排序也没有用。
这是我的数组
array:7 [▼
"21-07-2017" => array:1 [▶]
"04-09-2017" => array:3 [▶]
"27-07-2017" => array:1 [▶]
"31-07-2017" => array:1 [▶]
"01-08-2017" => array:2 [▶]
"05-09-2017" => array:1 [▶]
"15-09-2017" => array:1 [▶]
]
这就是我所做的。
usort($date, function($a, $b) {
foreach ($a as $value1) {
foreach ($b as $value2) {
return ($value1['date'] < $value2['date']) ? -1 : 1;
}
}
});
php 中是否有我缺少的内置函数?
【问题讨论】:
-
ksort 应该可以解决问题,您能否展示您期望的结果。
-
这里已经有一篇关于如何对日期数组进行排序的帖子:stackoverflow.com/questions/40462778/…
-
提供的 ans 对您有用吗?
-
ksort 无法正确排序您的日期,因为它们是 d-m-Y 格式,但 ksort 只能将它们视为字符串,因此它将按第一个数字排序,即月份的日期,而不是数字本月的。这就是为什么 user2486 有一个很好的解决方案,将每个键转换为时间戳,然后对它们进行排序。