使用 PHP 按数组日期降序排序


Sorting descending by date of array using PHP

我有这个数组

 Array
    (
        [0] => Array
            (
                [meeting_archive_id] => 1
                [corp_aggregate_id] => 1
                [created_by] => 103
                [created_to] => 2
                [date] => 15-07-2016
                [time] => 10:00 am
                [entry_id] => 103
                [user_type] => 1
                [firstname] => Kenyon
                [lastname] => Martena
                [job_title] => 
                [email] => 
                [company_name] => Lorem Ipsum Sodales Incorporated
                [phone] => 1-446-161-3194
                [type] => meeting
            )
        [1] => Array
            (
                [meeting_archive_id] => 16
                [corp_aggregate_id] => 2
                [created_by] => 103
                [created_to] => 6
                [date] => 17-07-2016
                [time] => 1:00 am
                [entry_id] => 103
                [user_type] => 1
                [firstname] => Hedley
                [lastname] => Aurelia
                [job_title] => 
                [email] => 
                [company_name] => Sit Amet Ante Corp.
                [phone] => 1-484-144-8520
                [type] => meeting
            )
        [2] => Array
            (
                [user_type] => 2
                [firstname] => Abbot
                [lastname] => Odessa
                [job_title] => 
                [email] => 
                [company_name] => Fermentum Vel Mauris Consulting
                [phone] => 1-912-440-1465
                [type] => event
                [meeting_archive_id] => 69
                [date] => 02-08-2016
                [time] => 8.00
                [corp_aggregate_id] => 
                [inves_aggregate_id] => 
            )
        [3] => Array
            (
                [user_type] => 1
                [firstname] => Kenyon
                [lastname] => Martena
                [job_title] => 
                [email] => 
                [company_name] => Lorem Ipsum Sodales Incorporated
                [phone] => 1-446-161-3194
                [type] => event
                [meeting_archive_id] => 70
                [date] => 15-07-2016
                [time] => 8.00
                [corp_aggregate_id] => 
                [inves_aggregate_id] => 
            )
    )

我需要按日期对这个数组进行排序

您可以按如下方式尝试此代码段:

foreach ($originalArray as $key => $part){ $sort[$key] = strtotime($part['date']); } array_multisort($sort, SORT_DESC, $originalArray);

你可以尝试使用usort:

usort($array, function($a, $b) {
   $d1 = strtotime($a['date']);
   $d2 = strtotime($b['date']);
   return $d1 - $d2;
});

$a$b 是数组,它们是主数组$array的一部分,然后比较它们的时间。

usort的原始定义是:

bool usort ( array &$array , callable $value_compare_func )

可调用函数为:

int callback ( mixed $a, mixed $b )

在 out 的情况下,可调用函数为:

function($a, $b) {
   $d1 = strtotime($a['date']);
   $d2 = strtotime($b['date']);
   return $d1 - $d2;
}

usort 的工作原理是将数组作为第一个参数和第二个参数可调用函数。该可调用函数,除了获取数组的两个元素。在内部,它使用快速排序算法,可调用函数应返回整数值 0、1 或 -1。

如果两个日期(或任何应该比较的内容(相等,则该函数应返回 0。

如果第一个元素更大,它应该返回 1如果第二个元素更大,则应返回 -1

输入数组(usort 函数中的第一个参数(是通过引用传递的,因此在调用 usort 后,您将立即对数组进行排序。