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我将运行一些额外的测试,并让您知道我的进展。