2015-10-03 82 views
-1

我對PHP的一些日期,其中有些人可以有「0」上月或日進行排序,例如:排序有幾個月或幾天日期0

1951-11-00

1951-12-14

問題是這個日期沒有得到排序與其他具有所有年份,日期和月份值的日期。

首先,我試着用在array_multisort:

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

它排序就OK了,但它首先排序是對一個月或一天00值,然後將其正常的日期進行排序,例如:

1937-05-00

1937-04-00

1935-11-00

1951年12月16日

1951年12月14日

正如你看到的,順序是不正常的,因爲與1951年的日期應該首先去,但排序算法在兩個組進行分類的日期,那些有00的人,和那些有全數的人。

然後我嘗試了uasort,但是我沒有得到好的結果。

如何正確地對此日期進行排序?對於我提出的名單,我需要它來顯示此訂單上(無論其在00月的):

1951年12月16日

1951年12月14日

1937至1905年-00

1937-04-00

1935-11-00

回答

4

只是其中排序爲字符串。與字符串相比,它們已經處於可比較的格式。

$dates = [ 
    '1937-05-00', 
    '1937-04-00', 
    '1935-11-00', 
    '1951-12-16', 
    '1951-12-14' 
]; 

usort($dates, function($a, $b) { 
    return $a < $b; 
}); 

var_export($dates); 

Demo

+0

感謝約翰,這工作得很好。 – Vito

相關問題