Php 按多个值排序数组-基于日期和时间

Php 按多个值排序数组-基于日期和时间,php,arrays,sorting,time,days,Php,Arrays,Sorting,Time,Days,在另一个方面的帮助下,我得到了一个数组,该数组现在已排序,并允许我返回 根据开始时间更正值 简化的阵列布局现在如下所示: $arr = array ( array( 'Days' => '1', 'Start' => '0930', 'End' => '0945', 'Site' => 'AA4'), array( 'Days' => '12345',

在另一个方面的帮助下,我得到了一个数组,该数组现在已排序,并允许我返回 根据开始时间更正值

简化的阵列布局现在如下所示:

$arr = array (
    array(  'Days' => '1',
            'Start' => '0930',
            'End' => '0945',
            'Site' => 'AA4'),

    array(  'Days' => '12345',
            'Start' => '1200',
            'End' => '1300',
            'Site' => 'EM3'),

    array(  'Days' => '12345',
            'Start' => '0830',
            'End' => '1730',
            'Site' => 'NW1'),

    array(  'Days' => '01',
            'Start' => '1200',
            'End' => '1300',
            'Site' => 'PL1'),

    array(  'Days' => '12345',
            'Start' =>'1730',
            'End' => '2130',
            'Site' => 'RE1')
);
通过以下方式完成排序:

usort($arr, function($a, $b) {
    return (date("N", strtotime($a['Days'])) <=> date("N", strtotime($b['Days']))) * 100 +
           ($b['Start'] <=> $a['Start']) * 10 +
           ($a['End'] <=> $b['End']);
});
usort($arr,function($a,$b){
报税表(日期(“N”,标准时间($a['Days'))日期(“N”,标准时间($b['Days')))*100+
($b['Start']$a['Start'])*10+
($a['End']$b['End']);
});
以及使用以下命令返回的值:

foreach ($arr as $i => $values) {
    if (strpos($values['Days'], $today) === false ) continue;

    if ($time >= $values['Start'] && $time <= $values['End']) {
        $site = $values['Site'];
        break;
    }
}

echo "$daysofWeek[$today] @ $time Site => $site";
foreach($arr as$i=>$values){
如果(strpos($values['Days',$today)==false)继续;

如果($time>=$values['Start']&&$time使用array\u multisort如以下示例所示,对两列或多列进行排序:

array_multisort(array_column($filter_arr, 'Route'), array_column($filter_arr, 'deviceName'),  SORT_ASC, array_column($filter_arr, 'startTime'), SORT_ASC, $filter_arr);

我试过用这个,但似乎总是把前一种弄得一团糟,所以虽然天是正确的,但开始时间已经过了。@Rocket出了什么问题?答案不正确?周一@1201 Site=>PL1I我将运行一些额外的测试,并让您知道我的进展。