2012-11-18 154 views
1

可能重複:
Sort an array of dates using usort() and sort() functions by the timestamp converted by mktime()排序利用usort()和sort()日期的陣列功能

我試圖使用排序日期排序的數組()和僅使用usort() - 不使用mktime()。我試圖比較每月,每天和每年,但不能得到正確的結果,再加上它給了我一堆警告。 將不勝感激任何幫助。

$dates = array ('10-10-2003', '2-17-2002', '2-16-2003','1-01-2005', '10-10-2004'); 
function toTime($date) { 

return sort ($date, SORT_STRING); 
} 

function sortByTime($a, $b) { 
$a = toTime($a); 
$b = toTime($b); 
if($a == $b) { 
    return 0; 
} 
return $a < $b ? -1 : 1 ; 
} 

usort($dates, 'sortByTime'); 
print_r($dates); 

非常感謝。

+0

什麼你在做toTime函數嗎? – Aerik

+0

Aerik,toTime函數我只是想對數組字符串進行排序。我試圖分開mm,dd,yyyy,但沒有成功。 – Oksana

+0

vascowite,是的 - 這也是我的問題。但在這裏我不能使用mktime()轉換器。 – Oksana

回答

1

使用uksort通過按鍵與一個回調

回調

排序簡單解析日期的時間戳,並使用一個簡單的比較

須藤代碼:

function cmp($a, $b) 
{ 
    global $array; 
    return strcmp($array[$a]['db'], $array[$b]['db']); 
} 

uksort($array, 'cmp'); 
+0

不能使用uksort():(只有usort()和排序() – Oksana

+0

@Oksana:爲什麼? –

+0

這是正規的教育理念:)打破你的頭,但不要使用方便的方法:) – Oksana