2016-08-15 250 views
0

我用於顯示通知的最後一個數組是這樣的:如何根據notif_date_sort對這個多維數組進行排序?

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」對數組內的這些元素進行排序?

+2

[?排序與日期時間字符串的數組]的可能的複製(http://stackoverflow.com/questions/9095351/sorting-an-array-with-datetime-strings) – RomanPerekhrest

回答

0

你可以用你自己的功能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對象。

0

您需要使用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"); 
相關問題