首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何按日期字段降序对数组进行排序?

如何按日期字段降序对数组进行排序?
EN

Stack Overflow用户
提问于 2016-10-09 23:21:54
回答 1查看 987关注 0票数 3

我有一个类似下面的数组。我想使用date对这个数组进行降序排序。但是我的代码不能工作。

$tbData = Array
(
    [0] => Array
        (
            [0] => Baby Boo
            [1] => 31921
            [2] => 07 Oct, 2016 07:27 pm
        )

   [1] => Array
        (
            [0] => Moonshine
            [1] => 32110
            [2] => 07 Oct, 2016 09:12 pm
        )


    [2] => Array
        (
            [0] => Hulk
            [1] => 31374
            [2] => 13 Sep, 2016 03:00 pm
        )

    [3] => Array
        (
            [0] => Sweet SHAI
            [1] => 667
            [2] => 05 Oct, 2016 09:36 am
        )

    [4] => Array
        (
            [0] => Hulk
            [1] => 31374
            [2] => 13 Sep, 2016 03:01 pm
        )

    [5] => Array
        (
            [0] => Maple
            [1] => 2270
            [2] => 08 Oct, 2016 07:31 am
        )

    [6] => Array
        (
            [0] => Josie
            [1] => 
            [2] => 08 Oct, 2016 04:40 pm
        )
)

我正在尝试使用this堆栈溢出问题来解决这个问题。但这对我不起作用。

我的代码如下:

$name = 2;
usort($tbData, function ($a, $b) use (&$name) {
     return strtotime($a[$name]) - strtotime($b[$name]);
});

我的日期列文件是不同的。这就是为什么我的代码不能工作的原因。有没有其他的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 01:15:28

正如评论中所说,这里的核心问题是strtotime不理解您的日期时间格式。您可以通过查看返回值来了解这一点,如果转换失败,返回值为FALSE

因此,解决方案是使用另一个函数进行转换,例如date_create_from_format,然后使用date_timestamp_get从该DateTime中提取纪元第二个值来进行比较,如下所示:

usort($tbData, function ($a, $b) {
    $sa = date_create_from_format('d M, Y H:i a',$a[2]);
    $sb = date_create_from_format('d M, Y H:i a',$b[2]);
    return date_timestamp_get($sa) - date_timestamp_get($sb);
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39945198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档