Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
排序数组包含一些按天排序的日期,如php中的星期日、星期一等_Php_Arrays_Date - Fatal编程技术网

排序数组包含一些按天排序的日期,如php中的星期日、星期一等

排序数组包含一些按天排序的日期,如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

我有一个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
);
如何像这样分类?请帮助我。

您可以使用
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;
});