1 回答
TA贡献1862条经验 获得超7个赞
$bookings = [
[
'period' => new DatePeriod(
new DateTime('2019-06-28 07:00:00'),
new DateInterval('PT1H'),
new DateTime('2019-06-28 08:00:00')
),
'byWho' => ['1' => 0.5, '2' => 0.5]
],
[
'period' => new DatePeriod(
new DateTime('2019-06-28 08:00:00'),
new DateInterval('PT1H'),
new DateTime('2019-06-28 09:00:00')
),
'byWho' => ['2' => 0.5]
]
];
示例数据结构,在 2019-06-28 的 7 到 8 之间,团队“1”预订了一半的大厅。7 到 9 队 '2' 预订了一半的大厅。所有预订都应该是 1 小时,如果他们超过一个小时,例如第二队,那么他们实际上有两个相邻的预订。如果 1 小时太长,那么您可以根据需要更改间隔。
因此,与其拥有一组预订的人何时预订的数组,不如这里有一个显示时间表的数组,您只需要查看特定时间以查看它是否已预订以及它有多满。
这种方式比你的好,因为你可以轻松地对这些日期进行排序,轻松地将这些数据从数据库中导入和导出到这种结构中。现在,因为它已排序,您可以很容易地找到您预订的时间,您只需要查看该时间段的可用空间。但是对于您的预订,您需要检查每个预订以查看是否有空间。
如果您想检查特定时间是否有空间,您可以使用二分搜索(如果您想让这更容易,请选择您自己的搜索)来查找相交的 DatePeriod,然后检查任一侧的值以查找任何其他匹配的日期周期. 然后您只需检查一下在这些时期是否有适合预订的空间。要检查空间,只需将“byWho”中的值与您的预订大小相加,然后查看它是否大于 1 即可。
- 1 回答
- 0 关注
- 128 浏览
添加回答
举报