使用DateTime字符串对数组进行排序?

时间:2012-02-01 11:56:02

标签: php arrays sorting

如何在PHP中的end_time值上有效地对此数组(最近的项目)进行排序?

array
  0 => 
    array
      'value' => int 4
      'end_time' => string '2012-01-20T08:00:00+0000' (length=24)
  1 => 
    array
      'value' => int 0
      'end_time' => string '2012-01-21T08:00:00+0000' (length=24)
  2 => 
    array
      'value' => int 5
      'end_time' => string '2012-01-22T08:00:00+0000' (length=24)
  3 => 
    array
      'value' => int 4
      'end_time' => string '2012-01-23T08:00:00+0000' (length=24)
  4 => 
    array
      'value' => int 7
      'end_time' => string '2012-01-24T08:00:00+0000' (length=24)

6 个答案:

答案 0 :(得分:19)

你看过usortDocs功能了吗?它允许您定义回调函数以比较两个值。所以我在这些方面提出了一些建议:

function compare_func($a, $b)
{
    // CONVERT $a AND $b to DATE AND TIME using strtotime() function
    $t1 = strtotime($a["end_time"]);
    $t2 = strtotime($b["end_time"]);

    return ($t2 - $t1);
}

usort(main_array, "compare_func");

答案 1 :(得分:5)

usort($data, function($a, $b) {
    return strtotime($a['end_time']) - strtotime($b['end_time']);
});

答案 2 :(得分:2)

usort($array, function($a, $b){ 
    return (strtotime ($a ['end_time']) 
          - strtotime ($b ['end_time'])) 
          * -1; 
});

答案 3 :(得分:0)

尝试:


function sort_datewise($x, $y) {
    $t1 = strtotime($x['end_time']);
    $t2 = strtotime($y['end_time']);
    return $t1 - $t2;
}    
usort($array, 'sort_datewise');

答案 4 :(得分:0)

您可以使用uasort这样的功能:

$arr=array();
$arr[] = array('valeu' => "4", 'end_time' => '2012-01-20T08:00:00+0000');
$arr[] = array('valeu' => "0", 'end_time' => '2012-01-21T08:00:00+0000');
$arr[] = array('valeu' => "5", 'end_time' => '2012-01-22T08:00:00+0000');
$arr[] = array('valeu' => "4", 'end_time' => '2012-01-23T08:00:00+0000');
$arr[] = array('valeu' => "7", 'end_time' => '2012-01-24T08:00:00+0000');
print_r($arr);
function cmp($a, $b) {
    $ta = strtotime($a['end_time']);
    $tb = strtotime($b['end_time']);
    return ($ta - $tb);
}
uasort($arr, 'cmp');
print_r($arr);

答案 5 :(得分:0)

这些数据来自数据库吗?如果是,那么最好的方法就是让数据库为您进行排序。