1 回答

TA貢獻(xiàn)1862條經(jīng)驗 獲得超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]
]
];
示例數(shù)據(jù)結(jié)構(gòu),在 2019-06-28 的 7 到 8 之間,團(tuán)隊“1”預(yù)訂了一半的大廳。7 到 9 隊 '2' 預(yù)訂了一半的大廳。所有預(yù)訂都應(yīng)該是 1 小時,如果他們超過一個小時,例如第二隊,那么他們實際上有兩個相鄰的預(yù)訂。如果 1 小時太長,那么您可以根據(jù)需要更改間隔。
因此,與其擁有一組預(yù)訂的人何時預(yù)訂的數(shù)組,不如這里有一個顯示時間表的數(shù)組,您只需要查看特定時間以查看它是否已預(yù)訂以及它有多滿。
這種方式比你的好,因為你可以輕松地對這些日期進(jìn)行排序,輕松地將這些數(shù)據(jù)從數(shù)據(jù)庫中導(dǎo)入和導(dǎo)出到這種結(jié)構(gòu)中。現(xiàn)在,因為它已排序,您可以很容易地找到您預(yù)訂的時間,您只需要查看該時間段的可用空間。但是對于您的預(yù)訂,您需要檢查每個預(yù)訂以查看是否有空間。
如果您想檢查特定時間是否有空間,您可以使用二分搜索(如果您想讓這更容易,請選擇您自己的搜索)來查找相交的 DatePeriod,然后檢查任一側(cè)的值以查找任何其他匹配的日期周期. 然后您只需檢查一下在這些時期是否有適合預(yù)訂的空間。要檢查空間,只需將“byWho”中的值與您的預(yù)訂大小相加,然后查看它是否大于 1 即可。
- 1 回答
- 0 關(guān)注
- 160 瀏覽
添加回答
舉報