簡體   English   中英

如果在零索引鍵處給定,則按日期對數組日期進行排序

[英]Sort Array Date wise if given at Zero index Key

實際上,我只有一個數組,我需要根據日期對它進行排序,但是不幸的是,這對我來說很困難。 你能幫我嗎 ...

我在下面有一個這樣的數組

         $data = array ( 
            array('July 2015', 2 , 5, 0, ''),
            array('September 2015', 2 , 5, 0, ''),
            array('August 2015', 2 , 5, 0, ''),
            array('March 2017', 2 , 5, 0, ''),
            array('December 2015', 2 , 5, 0, ''),
            array('March 2016', 2 , 5, 0, ''),
         );

現在,我想根據從最小日期到較大日期之類的日期進行排序,就像這樣。

         $data = array ( 
            array('July 2015', 2 , 5, 0, ''),
            array('August 2015', 2 , 5, 0, ''),
            array('September 2015', 2 , 5, 0, ''),
            array('December 2015', 2 , 5, 0, ''),
            array('March 2016', 2 , 5, 0, ''),
            array('March 2017', 2 , 5, 0, ''),
         );

誰能幫我。

任何幫助將不勝感激。

謝謝

使用usort函數,並使用strtotime將字符串日期轉換為時間戳:

usort($data, function ($a, $b) {
    $aTime = strtotime($a[0]);
    $bTime = strtotime($b[0]);

    if ($aTime == $bTime)
        return 0;

    return $aTime > $bTime ? 1 : -1;
});
$data = array(
    array('July 2015', 2, 5, 0, ''),
    array('September 2015', 2, 5, 0, ''),
    array('August 2015', 2, 5, 0, ''),
    array('March 2017', 2, 5, 0, ''),
    array('December 2015', 2, 5, 0, ''),
    array('March 2016', 2, 5, 0, ''),
);

uasort($data, function($a,$b){ 
    if(strtotime($a[0]) == strtotime($b[0])) 
    { 
        return 0;
    } 
    return strtotime($a[0]) < strtotime($b[0]) ? -1 : 1;
 });

print_r($data);

還是DECEZE所說的最簡單的方法

uasort($data, function($a,$b){ 
   return strtotime($a[0]) - strtotime($b[0]);
});

演示

DEMOZE建議的DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM