多组时间段判断有没时间冲突,忽略边界
思路
按开始时间讲数据升序排序
然后判断下一个开始时间如果小于上一个结束时间,则发生冲突
代码
$arr = [
['start_time' => 1, 'end_time' => 10],
['start_time' => 3, 'end_time' => 8],
['start_time' => 5, 'end_time' => 6],
];
function compareDate($arr): bool
{
array_multisort(array_column($arr, 'start_time'), SORT_ASC, $arr);
foreach ($arr as $k => $v){
if ($v['start_time'] >= $v['end_time'])
return false;
if ($k > 0 && $arr[$k]['start_time'] < $arr[$k-1]['end_time'])
return false;
}
return true;
}
var_dump(compareDate($arr));