为了账号安全,请及时绑定邮箱和手机立即绑定

如何从外部访问foreach中的数组?

如何从外部访问foreach中的数组?

PHP
繁星coding 2023-08-11 17:22:28
我的记录表中有StartTime和EndTime列,它们包含时间数据,我试图检查输入上写入的时间是否在StartTime和之间EndTime。在 Records 表中,一条记录的StartTime: 09:00和EndTime: 12:00以及它们的周期为10:00 , 11:00因此,如果在输入中写入 10:00,PHP 必须回显:“这个小时已经存在!”同时,我不仅检查表中某一行的时间,还检查其他记录行的时间。我使用whileandforeach循环执行此操作,但我找不到如何if正确检查语句中的结果数组,因此我的if语句不起作用。如何准确检查我在循环中创建的周期foreach?PHP<?php        $stmt1 = $db->query('SELECT StartTime, EndTime FROM records');        $periods[] = "";    while($row = $stmt1->fetch()){        echo '<li>'.$row['StartTime'].' - '.$row['EndTime'].'</li>';        $start = new DateTime($row['StartTime']);        $interval = new DateInterval('PT1H');        $end = new DateTime($row['EndTime']);                       $period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);        foreach ($period as $date) {            $periods[] = $date->format('H:i');          }                       }                   echo "<br>";        if(isset($_POST['submit'])){                //Date validations        $inputTime = new DateTime($_POST['inputTime']);        if ($inputTime == $periods) {            echo "This hour already exists!";        }                                                               }?>HTML 表单<form action="index.php" method="post">    <p>Time</p>    <input type="text" id="inputTime" name="inputTime">    <br>        <input type="submit" name="submit" value="Check"></form> 
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

我会使用简单的时间戳,而不是DateTime对象。


$stmt1 = $db->query('SELECT StartTime, EndTime FROM records');


$periods = [];


while ($row = $stmt1->fetch()){

    echo '<li>'.$row['StartTime'].' - '.$row['EndTime'].'</li>';


    $periods[] = [strtotime($row['StartTime']), strtotime($row['EndTime'])];               

}               


echo "<br>";


if (isset($_POST['submit'])){

    

    //Date validations

    $inputTime = strtotime($_POST['inputTime']);


    $exists = false;


    foreach ($periods as $period) {

        if ($inputTime >= $period[0] && $inputTime <= $period[1]) {

            $exists = true;

            break;

        }

    }

                

    if ($exists) {

        echo "This hour already exists!";

    }

}


查看完整回答
反对 回复 2023-08-11
  • 1 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信