如何按日期对数组进行排序?

时间:2012-12-04 18:15:26

标签: php

我有一个包含这些日期的数组。

.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 :(得分: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));

答案 1 :(得分:0)

您可以usort使用此http://php.net/manual/en/function.usort.php

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

usort($input, 'comparison')

这会调用两个字符串之间的“比较”功能,将其转换为时间并返回更大的字符串。

这段代码写的是我的头脑,但usort是前进的方法。