一尘不染

PHP按包含日期的元素对多维数组进行排序

php

我有一个数组,如:

Array
(
[0] => Array
    (
        [id] => 2
        [type] => comment
        [text] => hey
        [datetime] => 2010-05-15 11:29:45
    )

[1] => Array
    (
        [id] => 3
        [type] => status
        [text] => oi
        [datetime] => 2010-05-26 15:59:53
    )

[2] => Array
    (
        [id] => 4
        [type] => status
        [text] => yeww
        [datetime] => 2010-05-26 16:04:24
    )

)

谁能建议一种基于datetime元素对此进行排序/排序的方法?


阅读 514

收藏
2020-05-26

共1个答案

一尘不染

使用usort()和自定义比较功能:

function date_compare($a, $b)
{
    $t1 = strtotime($a['datetime']);
    $t2 = strtotime($b['datetime']);
    return $t1 - $t2;
}    
usort($array, 'date_compare');

编辑 :您的数据组织在一个数组的数组中。为了更好地区分这些数据,我们将其称为内部数组(数据)记录,以便您的数据实际上是一个记录数组。

usort会一次将其中两个记录传递给给定的比较函数date_compare()
date_compare然后将"datetime"每个记录的字段提取为UNIX时间戳(整数),并返回差值,以便结果将是0两个日期相等,如果第一个日期($a)较大则为正数,如果第二个日期较大则为负数。第二个参数($b)较大。
usort()使用此信息对数组进行排序。

2020-05-26