2012-12-04 143 views
-1

我有一個包含這些日期的數組。如何按日期排序數組?

.array(34) { 
    [0]=> 
    string(24) "Wed Nov 14 2012 09:27:49" 
    [1]=> 
    string(24) "Tue Nov 13 2012 15:49:06" 
    [2]=> 
    string(24) "Wed Nov 14 2012 09:27:49" 
    [3]=> 
    string(24) "Mon Dec 03 2012 13:58:16" 
    [4]=> 
    string(24) "Tue Nov 13 2012 14:20:16" 
    [5]=> 
    string(24) "Mon Dec 03 2012 16:13:38" 
    [6]=> 
    string(24) "Thu Aug 30 2012 15:05:56" 
    [7]=> 
    string(24) "Thu Aug 30 2012 15:11:32" 
    [8]=> 
    string(24) "Thu Aug 30 2012 15:21:12" 
    [9]=> 
    string(24) "Fri Oct 05 2012 10:11:28" 
    [10]=> 
    string(24) "Thu Aug 30 2012 15:22:58" 
    [11]=> 
    string(24) "Thu Aug 30 2012 14:38:13" 
    [12]=> 
    string(24) "Thu Aug 30 2012 15:22:00" 
    [13]=> 
    string(24) "Thu Aug 30 2012 15:03:15" 
    [14]=> 
    string(24) "Thu Aug 30 2012 15:00:11" 
    [15]=> 
    string(24) "Thu Aug 30 2012 15:01:25" 
    [16]=> 
    string(24) "Thu Aug 30 2012 15:20:26" 
    [17]=> 
    string(24) "Thu Aug 30 2012 14:59:21" 
    [18]=> 
    string(24) "Thu Aug 30 2012 15:26:48" 
    [19]=> 
    string(24) "Thu Aug 30 2012 14:58:34" 
    [20]=> 
    string(24) "Wed Sep 19 2012 09:42:57" 
    [21]=> 
    string(24) "Thu Aug 30 2012 15:24:34" 
    [22]=> 
    string(24) "Thu Aug 30 2012 15:06:50" 
    [23]=> 
    string(24) "Thu Aug 30 2012 14:57:42" 
    [24]=> 
    string(24) "Thu Aug 30 2012 15:09:06" 
    [25]=> 
    string(24) "Thu Aug 30 2012 14:53:13" 
    [26]=> 
    string(24) "Thu Aug 30 2012 15:25:35" 
    [27]=> 
    string(24) "Thu Oct 11 2012 15:19:10" 
    [28]=> 
    string(24) "Wed Oct 10 2012 11:27:15" 
    [29]=> 
    string(24) "Mon Dec 03 2012 16:24:06" 
    [30]=> 
    string(24) "Thu Nov 01 2012 10:00:42" 
    [31]=> 
    string(24) "Wed Nov 21 2012 11:08:36" 
    [32]=> 
    string(24) "Mon Dec 03 2012 16:14:29" 
    [33]=> 
    string(24) "Mon Dec 03 2012 16:30:31" 
} 

如何按日期和時間對此數組進行排序?例如,「Mon Jan 01 2012 01:01:01」將是數組中的第一個元素,並且「Mon Jan 01 2012 01:01:03」將是數組中的第二個元素。

+2

你嘗試過什麼嗎? –

+0

如何使用strtotime()轉換爲時間戳,這是一個int,存儲和排序,然後轉換回使用date() – KevInSol

+0

strtotime先前沒有爲我工作,所以我什麼都不能嘗試。事實證明,我的date.timezone設置已在php.ini中註釋掉,所以我現在刪除了評論和strtotime作品。我會盡力弄清楚自己,看看會發生什麼 – yan

回答

0

下面是一個代碼,它是不是最好的解決辦法,但它應該是工作

function sort_date($arr) { 
    $size = count($arr); 
    for ($i=0; $i<$size; $i++) { 
     for ($j=0; $j<$size-1-$i; $j++) { 
      if (strtotime($arr[$j+1]) < strtotime($arr[$j])) { 
       swap($arr, $j, $j+1); 
      } 
     } 
    } 
    return $arr; 
} 

function swap(&$arr, $a, $b) { 
    $tmp = $arr[$a]; 
    $arr[$a] = $arr[$b]; 
    $arr[$b] = $tmp; 
} 

//your first array 
var_dump($arr); 
//your sorted array 
var_dump(sort_date($arr)); 
+0

謝謝。 strtotime早先不適合我。現在我會自己嘗試,如果不行,我會給你一個嘗試 – yan

0

您可以使用usort這個(http://php.net/manual/en/function.usort.php

function comparison($a, $b) 
{ 
    return strtotime($a) > strtotime($b); 
} 

usort($input, 'comparison') 

這將調用「比較」兩個字符串之間的函數,將其轉換爲時間並返回更大的值。

這段代碼寫的是我的頭頂,但usort是前進的道路。