2011-02-22 163 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(用于分拣多维数组非常有用)

希望这有助于。