Php 在foreach循环中使用dateTime函数检查设置日期是否大于当前日期
我正在尝试对数据库中的日期/时间字段使用dateTime函数,以相互检查其是否大于或小于对方 我遇到的问题是,如果我将条件设置为Php 在foreach循环中使用dateTime函数检查设置日期是否大于当前日期,php,datetime,if-statement,pdo,Php,Datetime,If Statement,Pdo,我正在尝试对数据库中的日期/时间字段使用dateTime函数,以相互检查其是否大于或小于对方 我遇到的问题是,如果我将条件设置为if($date>=$end\u date),那么我只获得要输出的$noEvents,即使有end\u date字段实际上大于$date(当前日期时间)。如果我将条件更改为if($date=$end\u date) 我只得到$noEvents 如果条件是:If($date),那么这就是此处的相关代码 $end_date = $event_row['end_date'];
if($date>=$end\u date)
,那么我只获得要输出的$noEvents
,即使有end\u date
字段实际上大于$date
(当前日期时间)。如果我将条件更改为if($date=$end\u date)
我只得到$noEvents
如果条件是:
If($date),那么这就是此处的相关代码
$end_date = $event_row['end_date'];
$date = new DateTime("now");
if ($date <= $end_date) { }
谢谢,这就成功了。你知道为什么我的if-isset会在条件输出else时输出变量吗?@Paul原因不清楚,但我发现作为一个测试,isset
无论如何都很笨拙。我会在循环之前设置$noEvents=NULL;
,然后尝试if($noEvents)
我尝试了您为$noEvents变量给出的建议,但它仍然显示出来。我将这一点置于循环之外,以便该变量不会多次输出。
if ($event_stmt = $con->prepare($sql_events)) {
$event_stmt->execute();
$event_rows = $event_stmt->fetchAll(PDO::FETCH_ASSOC);
$noEvents = NULL;
foreach ($event_rows as $event_row) {
$event_name = $event_row['event_name'];
$display_date = $event_row['display_date'];
$event_description = $event_row['description'];
//$end_date = $event_row['end_date'];
$end_date = new DateTime($event_row['end_date']);
$date = new DateTime('now');
//$active_events = count($event_name);
//var_dump($active_events);
//if ($active_events === 0) {
if ($date <= $end_date) {
$noEvents = 'No events are scheduled yet.';
} else {
echo '<div class="eventBlock">';
echo '<span class="hGc">'. $display_date .'</span>';
echo '<a href="#" class="hLink">'. $event_name .'</a>';
echo '<p class="dG margBot40">'. $event_description .'</p>';
echo '</div>';
}
}
if ($noEvents) {
echo $noEvents;
}
$end_date = $event_row['end_date'];
$date = new DateTime("now");
if ($date <= $end_date) { }
$end_date = new DateTime($event_row['end_date']);