第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

僅當(dāng)數(shù)組的某些元素具有相同的值時才增加變量計數(shù) - PHP

僅當(dāng)數(shù)組的某些元素具有相同的值時才增加變量計數(shù) - PHP

PHP
哆啦的時光機(jī) 2021-09-05 20:44:19
我不知道這個問題的正確標(biāo)題。如果我沒有添加適當(dāng)?shù)臉?biāo)題,請幫我編輯這個問題。我正在嘗試為活動預(yù)訂大廳空間??臻g預(yù)訂分為三種類型:Full - 0 (Can book by one team at same time)Half - 1 (Can book by 2 team at same time)Shared - 2 (Can book by 4 teams at same time)所以,我寫了下面提到的代碼。<?php $obj0 = new stdClass();$obj0->id = '1';$obj0->start = '2019-06-28';$obj0->end = '2019-06-28';$obj0->start_time = '07:00:00';$obj0->end_time = '08:00:00';$obj0->hall_space = '1';$obj1 = new stdClass();$obj1->id = '7';$obj1->start = '2019-06-28';$obj1->end = '2019-06-28';$obj1->start_time = '06:00:00';$obj1->end_time = '07:00:00';$obj1->hall_space = '1';$obj2 = new stdClass();$obj2->id = '2';$obj2->start = '2019-06-29';$obj2->end = '2019-06-29';$obj2->start_time = '07:00:00';$obj2->end_time = '08:00:00';$obj2->hall_space = '1';$obj3 = new stdClass();$obj3->id = '8';$obj3->start = '2019-06-29';$obj3->end = '2019-06-29';$obj3->start_time = '06:00:00';$obj3->end_time = '07:00:00';$obj3->hall_space = '1';$obj4 = new stdClass();$obj4->id = '3';$obj4->start = '2019-06-30';$obj4->end = '2019-06-30';$obj4->start_time = '07:00:00';$obj4->end_time = '08:00:00';$obj4->hall_space = '1';$obj5 = new stdClass();$obj5->id = '9';$obj5->start = '2019-06-30';$obj5->end = '2019-06-30';$obj5->start_time = '06:00:00';$obj5->end_time = '07:00:00';$obj5->hall_space = '1';$data = array($obj0, $obj1, $obj2, $obj3, $obj4, $obj5);$hall_space = 1; //this means user is trying to book half space這對于單個事件(即非重復(fù))工作正常。但是,對于重復(fù)事件,這不能正常工作。在這里,在這種情況下,用戶試圖預(yù)訂半空間(即值 1)的日期2019-06-28to 2019-06-30from 6 am to 8am。上面提到的$data代表該時間范圍內(nèi)所有已預(yù)訂的事件,這意味著每天有兩個半間隔事件(一個從早上 6 點到 7 點,另一個從早上 7 點到 8 點)。這意味著應(yīng)該允許預(yù)訂這個新事件(半間隔)。但是,我的邏輯不起作用,因為它正在考慮所有這些事件,因為它們將在相同的日期和時間舉行。這意味著,$half僅當(dāng)事件發(fā)生在相同的日期和時間時才應(yīng)增加變量,并且最終不應(yīng)產(chǎn)生錯誤。我試圖從我的角度解釋所有內(nèi)容,您也可以復(fù)制并粘貼代碼進(jìn)行測試。如果您需要更多詳細(xì)信息,請告訴我。
查看完整描述

1 回答

?
牧羊人nacy

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 即可。


查看完整回答
反對 回復(fù) 2021-09-05
  • 1 回答
  • 0 關(guān)注
  • 160 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號