首页 > 解决方案 > PHP / Yii2 在注册前检查数据库中的至少 1 个位置是否有足够的时间空闲

问题描述

好的,我认为我完全错了...我尝试了一种简单的方法来做到这一点...

它仍然无法正常工作,但我认为它来自铭文中的日期时间(0000-00-00 00:00:00)和我的 array_of_time 中只有几个小时(00:00:00)

查看代码:如果有人可以帮助我处理这个''

$sessionsInside = Session::find()->where(['>=', 'start_date', $today])->orderby(['start_date'=>'ASC'])->all(); //session ex: 2018-09-09 9h00 to 11h45
$inscriptionsInside = Inscription::find()->where(['>=', 'day', $today])->orderby(['day'=>'ASC'])->all();

foreach ($sessionsInside as $session) {

    $array_of_time = [];
    $place_count = 2;
    $session_id = $session->id;
    $session_start_day = $session->start_date; //  day of session 
    $session_start_time    = strtotime ($session->start_time); //start time of sesion 9h00
    $session_end_time      = strtotime ($session->end_time);  //end time of session 11h45
    $session_start_daytime =  $session_start_day.' '.date('H:i:s', $session_start_time);

    $fifteen_mins  = 15 * 60;

    while ($session_start_time <= $session_end_time) {

        $array_of_time[] = $session_start_time;      

        $session_start_time += $fifteen_mins;

    }


    foreach ($array_of_time as $start_time_session) {

        $end_time_session = $start_time_session + $duration_test;

        foreach ($inscriptionsInside as $inscription) {

            if($inscription->start_time == $start_time_session){
               // $array_of_time[] = unset($start_time_session);
                $array_of_time = array_diff($array_of_time, $start_time_session);
            }

            elseif($inscription->start_time > $start_time_session){
                if($inscription->start_time < $end_time_session){
                    $array_of_time = array_diff($array_of_time, $start_time_session);
                }
            }
            elseif($inscription->start_time < $start_time_session){
                if($inscription->end_time > $start_time_session){
                    $array_of_time = array_diff($array_of_time, $start_time_session);
                }

            }


        }

    }


    echo '<br>'.$session_start_day.'<br><br>';

    foreach ($array_of_time as $timeslot) {

        echo date('H:i',$timeslot).'<br>';


    }


}

标签: phparraysmultidimensional-arrayyii2

解决方案


推荐阅读