2011-02-22 167 views
0

我正在爲此而苦苦掙扎。根據日期按值排序多維數組。這裏是一個陣列的片段:如何按日期值對多維數組排序?

Array 
(
    [0] => Array 
     (
      [clicks] => 14 
      [point] => 11 February 2011 
     ) 

    [1] => Array 
     (
      [clicks] => 1 
      [point] => 14 February 2011 
     ) 

    [2] => Array 
     (
      [clicks] => 8 
      [point] => 15 February 2011 
     ) 

    [3] => Array 
     (
      [clicks] => 0 
      [point] => 08 February 2011 
     ) 

我想按正確的順序按鍵排序。所以在這種情況下,08 February 2011應該獲得密鑰0。我嘗試使用usort,但是這樣做並不順利,因爲我甚至無法使用codeigniter中的回調函數,這是我正在研究的另一個問題。

這樣做的最有效方法是什麼?我的陣列可以增長到60個條目。

謝謝大家的幫助。

回答

1

這個自定義排序應該工作:

function cmp($a, $b){ 
    $l = strtotime($a['point']); 
    $r = strtotime($b['point']); 
    if($l == $r){ 
     return 0; 
    } 
    return $l < $r ? -1 : 1; 
} 

usort($arr, "cmp"); 
+0

這兩個函數都能正常工作,但是我試過了,因爲它測試它們是否相等。我不確定蒂姆的答案是否解釋了這一點,但我更容易理解這個功能。謝謝。 – Abs 2011-02-23 21:34:47

0

假設,$數據是您的多維數組。

foreach ($data as $key => $row) { 
    $point[$key] = strtotime($row['point']); 
} 

// Sort the data with date ascending 
array_multisort($point, SORT_ASC, $data); 

參見在array_multisort功能:http://php.net/manual/en/function.array-multisort.php(用於分揀多維數組非常有用)

希望這有助於。