如何在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)
答案 0 :(得分:19)
你看过usort
Docs功能了吗?它允许您定义回调函数以比较两个值。所以我在这些方面提出了一些建议:
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)
这些数据来自数据库吗?如果是,那么最好的方法就是让数据库为您进行排序。