如何使用日期值对数组进行排序

时间:2011-07-22 10:40:59

标签: php arrays sorting date multidimensional-array

我生成一个包含重新排列日期值的数组

$totert = array(
    array('2011','07','25'),
    array('2011','07','27'),
    array('2011','06','25'),
    array('2011','06','02'),
    array('2011','05','25'),
    array('2011','05','15')
);

如何根据我的日期安排价值

  • 2011-05-15
  • 2011-05-25
  • 2011-06-02
  • 2011-06-25
  • 2011-07-25
  • 2011-07-27

有人可以帮助我

3 个答案:

答案 0 :(得分:2)

使用usort()并提供自定义比较功能。

$totert = array(
    array('2011','07','25'), 
    array('2011','07','27'), 
    array('2011','06','25'), 
    array('2011','06','02'), 
    array('2011','05','25'), 
    array('2011','05','15')
);
usort($totert, function($a, $b) {
    return (int)implode('', $a) - (int)implode('', $b);
});

print_r(array_map(function($v) {
    return implode('-', $v);
}, $totert));

答案 1 :(得分:0)

$timestamps = array_map (function ($date) {
  return mktime(0,0,0, $date[1], $date[2], $date[0]);
}, $totert;

sort($timestamps);

这些值现在是UNIX时间戳,但是{i} date()很容易创建你喜欢的任何格式。

另一个解决方案是使用简单的字符串比较

$dates = array_map (function ($date) {
  return implode('-', $date);
}, $totert;

sort($dates, SORT_STRING);

如果您确实需要将日期作为数组,则可以再次在explode()拆分(-)单个值。

答案 2 :(得分:0)

    $totert = array(  
 array('2011','07','25'), 
 array('2011','07','27'), 
 array('2011','06','25'), 
 array('2011','06','02'), 
 array('2011','05','25'), 
 array('2011','05','15'));

function convert_to_date(&$item, $key)
{
    $item = $item[0].'-'.$item[1].'-'.$item[2];
}

array_walk($totert, 'convert_to_date');
sort($totert);
print_r($totert);