如何在PHP中检查当前时间和数据库时间是否相等

如何在PHP中检查当前时间和数据库时间是否相等,php,datetime,if-statement,timezone,Php,Datetime,If Statement,Timezone,我试图在PHP中比较两次。我从Mysql获取时间并将其存储在记事本中,如 21:30 22:00 22:30 然后我从文件中读取时间并将其存储在数组中 $myfile = file('Scheduled_data.txt'); $time_array = array(); // store into array foreach ($myfile as $line) { $line_array = explode("\t", $line); $time_

我试图在
PHP
中比较两次。我从
Mysql
获取时间并将其存储在记事本中,如

  • 21:30
  • 22:00
  • 22:30
然后我从
文件中读取时间
并将其存储在
数组中

$myfile = file('Scheduled_data.txt');
$time_array = array();

// store into array 
foreach ($myfile as $line) {
    $line_array = explode("\t", $line);
    $time_array[] =  $line_array[0];
}

//looping array 
for ($i = 0; $i < count($time_array); $i++) {
    $timezone = new DateTime("now", new DateTimeZone('Asia/Kolkata') );
    $current_time=$timezone->format('H:i');
    echo  $time_array[$i]; //ex: first data 21:30
    echo "\t";
    echo $current_time; // 21:30
    if($time_array == $current_time)
    { 
      echo "yes"; // not moving inside if cond
    }
}

注意这两种类型都是字符串,尝试使用
==
进行比较仍然没有用。

但是,您所做的不是最佳做法,而是在以下情况下比较数组和字符串时犯了错误:

if($time_array == $current_time)
{ 
  echo "yes"; // not moving inside if cond
}
解决方案 您需要用
$current\u time
检查
$time\u数组的
$i
第四个索引,如下所示:

if(strtotime($time_array[$i]) == strtotime($current_time))
{ 
  echo "yes"; // not moving inside if cond
}
因此: 最好使用来比较:

$myfile = file('Scheduled_data.txt');
$time_array = array();

// store into array
foreach ($myfile as $line) {
    $line_array = explode("\t", $line);
    $time_array[] =  $line_array[0];
}

//looping array
for ($i = 0; $i < count($time_array); $i++) {
    $timezone = new DateTime("now", new DateTimeZone('Asia/Kolkata') );
    $current_time=$timezone->format('H:i');
    echo  $time_array[$i]; //ex: first data 21:30
    echo "\n\r";
    echo $current_time; // 21:30
    if(strtotime($time_array[$i]) == strtotime($current_time)){ 
        echo "yes"; // not moving inside if cond
    }
}
$myfile=file('Scheduled_data.txt');
$time_array=array();
//存储到数组中
foreach($myfile作为$line){
$line\u数组=分解(“\t”,$line);
$time_array[]=$line_array[0];
}
//循环阵列
对于($i=0;$iformat('H:i');
echo$time_数组[$i];//例如:第一个数据21:30
回显“\n\r”;
echo$current_time;//21:30
if(strottime($time_数组[$i])==strottime($current_时间)){
回显“是”;//如果条件允许,则不在内部移动
}
}
通知
顺便说一下,最好使用
==
运算符比较两个变量,因为它将检查它们的类型进行比较,您需要使用
PHP strotime
毫秒为单位转换这两个时间

如果出现
状况,只需更换

if($time_array[$i] == $current_time)
        { 
          echo "yes"; // not moving inside if cond
        }
if(strtotime($time_array[$i]) == strtotime($current_time))
{ 
    echo "yes"; // not moving inside if cond
}
您可以使用
PHP DATE()
函数来尝试下面的代码,而不是使用
DateTime类

for ($i = 0; $i<count($time_array); $i++)
{
    date_default_timezone_set('Asia/Kolkata');
    if(strtotime($time_array[$i]) == strtotime(date('H:i')))
    { 
      echo "yes"; // not moving inside if cond
    }
} 

for($i=0;$i)您正在将
$time\u数组放入
if
语句中,该语句是一个数组。您需要放入
$time\u数组[$i]
抱歉,我只尝试了这个,但没有进去,如果cond@ManishPareek
var\u dump
这两个
$time\u数组[$i]
$current\u-time
,并检查结果'13:33'(长度=6)‘13:40’(长度=5)我得到这个第一个13:33是从db@AnuPriya你第一次就得到了一个空格。只是修剪和比较一下。rry我只尝试了这个,但没有进去,如果cond,并且尝试了比较使用===仍然没有用@Akinak