简体   繁体   English

数组 Php 中的多个条件

[英]Multiple Conditions in array Php

I have following array with start time and end time (both saved in database)我有以下带有开始时间和结束时间的数组(都保存在数据库中)

$cars=array("09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30");

and i want to show booked time (saved in database) and availiable time, I tried with following code我想显示预订时间(保存在数据库中)和可用时间,我尝试使用以下代码

$start = "09:30";
$end = "10:30";
$availability = array_combine($cars, array_map(function ($v) use ($start, $end) { 
    return (strtotime($v) < strtotime($start) || strtotime($v) > strtotime($end)) ? 'available' : 'booked'; }, 
    $cars));

showing result显示结果

Array
(
    [09:00] => available
    [09:30] => booked
    [10:00] => booked
    [10:30] => booked
    [11:00] => available
    [11:30] => available
    [12:00] => available
    [12:30] => available
)

but i have multiple start time and end time(dynamically) so how can i get result (like above) ?但我有多个开始时间和结束时间(动态),所以我怎样才能得到结果(如上)?

<?php
$times = array("09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30");
$availability = array_fill_keys($times, 'available');

function book(&$availability, $start, $end)
{
    foreach($availability as $k => $v)
        if(strtotime($k) >= strtotime($start) && strtotime($k) <= strtotime($end))
            $availability[$k] = 'booked';

}

book($availability, '09:30', '10:30');
book($availability, '11:30', '12:00');

print_r($availability);

Output:输出:

Array
(
    [09:00] => available
    [09:30] => booked
    [10:00] => booked
    [10:30] => booked
    [11:00] => available
    [11:30] => booked
    [12:00] => booked
    [12:30] => available
)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM