给定数组的生日在输出中排序错误

时间:2019-07-07 21:23:26

标签: php html

我有一个文件,它从数据库中读取生日,并为用户显示即将到来的生日。但是似乎排序是完全错误的,有人可以给我提示哪里出错了吗?它仅显示日期和月份,似乎按日期而不是月份进行排序。

我尝试了多种排序选项,但无法正确处理。

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

1 个答案:

答案 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"
}

不需要花哨的排序