亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

從數組中獲取時間間隔/空閑時間

從數組中獲取時間間隔/空閑時間

PHP
守著星空守著你 2022-10-28 16:31:38
假設有人需要預訂房間??头款A訂服務的開放時間為 08:00:00 至 18:00:00。所以預約時間有限:array:2 [▼  0 => "08:00:00"  1 => "18:00:00"]而且房間也可能有一些已經預定的時間,應該是這樣的:array:3 [▼  0 => array:2 [▼    0 => "08:05:00"    1 => "09:00:00"  ]  1 => array:2 [▼    0 => "10:00:00"    1 => "15:00:00"  ]  2 => array:2 [▼    0 => "16:00:00"    1 => "17:00:00"  ]]我想做的是找到時間間隔,結果應該是這樣的:array:4 [▼  0 => array:2 [▼    0 => "8:00:00"    1 => "8:05:00"  ]  1 => array:2 [▼    0 => "9:00:00"    1 => "10:00:00"  ]  2 => array:2 [▼    0 => "15:00:00"    1 => "16:00:00"  ]  3 => array:2 [▼    0 => "17:00:00"    1 => "18:00:00"  ]]看來我必須先對預定時間數組進行排序,然后再對數組進行補充。但是如何在 PHP 代碼中實現它。有人可以幫我解決這個問題嗎?提前謝謝。
查看完整描述

1 回答

?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

如果您的預訂未按開始時間排序,則需要對其進行排序。然后您可以遍歷預訂,在一個預訂結束和下一個預訂開始之間創建空閑時間條目。請注意,由于您的時間是HH:mm:ss格式,您可以直接將它們作為字符串進行比較;無需將它們轉換為整數時間值。


$hours = ["08:00:00", "18:00:00"];


$bookings = [["10:00:00", "15:00:00"],

             ["08:05:00", "09:00:00"],

             ["16:00:00", "17:00:00"]

             ];


$start = $hours[0];

$end = $hours[1];


// sort the bookings

$bstart = array_column($bookings, 0);

array_multisort($bstart, $bookings);


// get the free times

$time = $start;

$bindex = 0;

$free = array();

while ($time < $end && $bindex < count($bookings)) {

    if ($time < $bookings[$bindex][0]) {

        $free[] = [$time, $bookings[$bindex][0]];

    }

    $time = $bookings[$bindex][1];

    $bindex++;

}

// end of day free?

if ($time < $end) {

    $free[] = [$time, $end];

}

print_r($free);

輸出:


Array

(

    [0] => Array

        (

            [0] => 08:00:00

            [1] => 08:05:00

        )

    [1] => Array

        (

            [0] => 09:00:00

            [1] => 10:00:00

        )

    [2] => Array

        (

            [0] => 15:00:00

            [1] => 16:00:00

        )

    [3] => Array

        (

            [0] => 17:00:00

            [1] => 18:00:00

        )

)


查看完整回答
反對 回復 2022-10-28
  • 1 回答
  • 0 關注
  • 117 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號