排序数组包含一些按天排序的日期,如php中的星期日、星期一等
我有一个7个日期的数组排序数组包含一些按天排序的日期,如php中的星期日、星期一等,php,arrays,date,Php,Arrays,Date,我有一个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( '2
$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
);
如何像这样分类?请帮助我。您可以使用usort()
和date('w')
对数组进行排序,使用“一周中某一天的数字表示法”
产出:
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
)
返回:0(星期日)到6(星期六)。usort(数组,函数($a,$b){
$dayA=日期('w',标准时间($a));
$dayB=日期('w',标准时间($b));
返回$dayA<$dayB?1:$dayA===$dayB?0:-1;
});
这应该在您要求时起作用排序回调将返回值0;不是
true
或false
@Arya不客气。确保使用-
而不是
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
)
usort(array, function($a, $b){
$dayA = date('w', strtotime($a));
$dayB = date('w', strtotime($b));
return $dayA < $dayB ? 1 : $dayA === $dayB ? 0 : -1;
});