而且for循环不起作用

Pau*_*182 -1 php mysql time datetime

我有一个问题,我认为有一个非常简单的解决方案,但我现在忙了12个小时,我不知道这个问题的解决方案.

我有一个包含多个数据的数据库.重要的数据是我在数据库中保存的时间.我想构建一个模块,提供数据08:00到17:00.例如:

08:00 available
09:00 not available
10:00 available
11:00 available
12:00 available
13:00 available
14:00 available
15:00 available
16:00 available
17:00 not available

我将使用以下代码

$mysql['avail'] = mysql_query("SELECT time FROM `module` WHERE `date` = '" . $dbdate . "' ORDER BY date");
while($avail = mysql_fetch_assoc($mysql['avail'])){

  $hour = date('s',$avail['time']);

  for ($i = 8;$i <= 17; $i++) {

    if($hour == $i) {

        echo $i.':00&nbsp;not available<br />';

    } else {


        echo $i.':00&nbsp;available<br />';

    }

  } 

}
Run Code Online (Sandbox Code Playgroud)

现在我得到以下输出:

08:00 available
09:00 not available
10:00 available
11:00 available
12:00 available
13:00 available
14:00 available
15:00 available
16:00 available
17:00 available

08:00 available
09:00 available
10:00 available
11:00 available
12:00 available
13:00 available
14:00 available
15:00 available
16:00 available
17:00 not available

无论我尝试什么,我都无法解决问题.有没有人可以帮助我?

Vad*_*aev 5

您必须首先获取所有可用时间,然后使用您的时间表进行一次循环,并检查每小时是否在可用小时数组中.

像这样的东西

$not_available_hours = array();
$mysql['avail'] = mysql_query("SELECT time FROM `module` WHERE `date` = '" . $dbdate . "' ORDER BY date");
while($avail = mysql_fetch_assoc($mysql['avail'])){
    $not_available_hours[] = date('s',$avail['time']);
}

for ($i = 8;$i <= 17; $i++) {
    if (in_array($i, $not_available_hours) {
        echo $i.':00&nbsp;not available<br />';
    } else {
        echo $i.':00&nbsp;available<br />';
    }
}
Run Code Online (Sandbox Code Playgroud)