我有一个包含7个日期的数组。
$dates = array(
'2018-03-07', //Wednesday
'2018-03-08', //Thursday
'2018-03-09', //Friday
'2018-03-10', //Saturday
'2018-03-11', //Sunday
'2018-03-12', //Monday
'2018-03-13', //Tuesday
);
我想按天(星期日到星期六)对上面的数组进行排序。
预期的输出是,
$dates = array(
'2018-03-11', //Sunday
'2018-03-12', //Monday
'2018-03-13', //Tuesday
'2018-03-07', //Wednesday
'2018-03-08', //Thursday
'2018-03-09', //Friday
'2018-03-10', //Saturday
);
如何排序?请帮帮我。
答案 0 :(得分:4)
您可以使用usort()
和date('w')
,使用“星期几的数字表示法”对数组进行排序
$dates = array(
'2018-03-07', //Wednesday
'2018-03-08', //Thursday
'2018-03-09', //Friday
'2018-03-10', //Saturday
'2018-03-11', //Sunday
'2018-03-12', //Monday
'2018-03-13', //Tuesday
);
usort($dates, function($a, $b) {
return date('w',strtotime($a)) - date('w',strtotime($b)) ;
});
print_r($dates);
输出:
Array
(
[0] => 2018-03-11
[1] => 2018-03-12
[2] => 2018-03-13
[3] => 2018-03-07
[4] => 2018-03-08
[5] => 2018-03-09
[6] => 2018-03-10
)
date('w')
返回:0(星期日)到6(星期六)。
答案 1 :(得分:0)
usort(array, function($a, $b){
$dayA = date('w', strtotime($a));
$dayB = date('w', strtotime($b));
return $dayA < $dayB ? 1 : $dayA === $dayB ? 0 : -1;
});
这应该像你要求的那样工作