我有一个文件,它从数据库中读取生日,并为用户显示即将到来的生日。但是似乎排序是完全错误的,有人可以给我提示哪里出错了吗?它仅显示日期和月份,似乎按日期而不是月份进行排序。
我尝试了多种排序选项,但无法正确处理。
usort函数,是一次正确测试,但无济于事。
if ($birthdays) {
echo "<ul>";
foreach($birthdays as $item {
$item->birthdate = str_replace('/', '-', $item->birthdate);
$time = strtotime($item->birthdate);
$time = date('d.m', $time);
usort($item->birthdate, function ($a, $b) {
return substr($b, -3) - substr($a, -3);
});
$date = "<span class='time-created right'>{$time}</span>";
echo "<a href='{$item->profileURL()}'><li><img src='{$item->iconURL()->topbar}' /><i class='fa fa-birthday-cake'></i>{$item->fullname}{$date}</li></a>";
}
echo "</ul>";
}
输出如下: 27.07 25.07 24.07 18.08 16.11
但是应该是这样的: 24.07 25.07 27.07 18.08 16.11
答案 0 :(得分:1)
将日期放在前一天,就可以正常地对其进行排序。 1月5日表示0105,10月25日表示1025。
$arr = ["0727", "0725", "0724", "0818", "1116"];
sort($arr);
var_dump($arr);
礼物:
array(5) {
[0]=>
string(4) "0724"
[1]=>
string(4) "0725"
[2]=>
string(4) "0727"
[3]=>
string(4) "0818"
[4]=>
string(4) "1116"
}
不需要花哨的排序