php 多个时间段重叠区域判断

$times=[
0=>'08:00-09:00'
1=>'09:20-13:00'
2=>'14:00-18:00'
3=>'19:00-20:00'
];

有这样的时间数组,个数非常多,都是一些预约信息,现在客户选定一个预约时间,我要判断给定的时间与已经预约的是否有重叠。例如:给 08:30-10:00,那么,这个时间就与$time[0],$time[1]有部分重叠区域,我做法是把已经预约的数组做一个七十点排序,用foreach遍历,有一个重叠就把第一个有重叠的时间段输出,但是我想可能会有更好的解决办法,时间段就像有起止点的线段,我把所有的时间段都往x轴上投影,一下就能知道哪些地方有重叠。能不能给出具体方法?谢谢。

clipboard.png

阅读 4.3k
1 个回答
新手上路,请多包涵
//开始时间和结束时间都不在已预约的时间段里,就表示没有重叠
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题