【问题标题】:How to sort this multi-dimensional array based on notif_date_sort?如何根据notif_date_sort对这个多维数组进行排序?
【发布时间】:2016-08-15 13:00:59
【问题描述】:

显示通知的最终数组如下:

 Array
(
    [0] => Array
        (
            [notification] => 1 new topic posted in : Current Affairs  classroom
            [on_create] => 12th Aug - 2016 5:20AM
            [notif_date_sort] => 2016-08-12 05:20:23
        )

    [1] => Array
        (
            [notification] => 8 new topic posted in : GK classroom
            [on_create] => 4th Aug - 2016 10:51AM
            [notif_date_sort] => 2016-08-04 10:51:56
        )
)

我尝试了 multisort、ksort 等方法,但没有找到合适的结果。如何根据“notif_date_sort”对数组中的这些元素进行排序?

【问题讨论】:

标签: php arrays sorting multidimensional-array logic


【解决方案1】:

您可以将usort() 与您自己的函数一起使用,以按日期 对结果进行排序。

这样,

usort($array, 'custom_date_sort');
function custom_date_sort($a,$b) {
    $date1 = DateTime::createFromFormat('Y-m-d H:i:s', $a["notif_date_sort"]);
    $date2 = DateTime::createFromFormat('Y-m-d H:i:s', $b["notif_date_sort"]);
    return $date1>$date2;
}

DateTime::createFromFormat 从字符串中创建 DateTime 对象。

【讨论】:

    【解决方案2】:

    你需要使用usort()函数。

    试试这个:

    function compare_dates($date1, $date2){
         $date1 = strtotime($date1['notif_date_sort']);
         $date2 = strtotime($date2['notif_date_sort']);
         if ($date1 == $date2) {
             return 0;
         }
         return ($date2 < $date2) ? -1 : 1;
    }
    
    usort($array, "compare_dates");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 1970-01-01
      • 2021-03-11
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多