如何使用新的DateTime()修复if-else语句的奇怪结果

时间:2019-01-23 10:30:06

标签: php

我正在使用'if-else'语句来更改div元素的类,但是我从else子句中得到结果,而if子句中的结果处于状态。

我正在使用PHP 5.6。 当我调试该语句时,我得到了变量的这些值:

- $row['gepland'] < new DateTime()  : true  
- new dateTime()    (DateTime)  : 2019-01-23 11:05:51.000000
- $row['gepland']   (string)        : 2019-03-11 00:00:00   
- new DateTime($row['gepland']) < new DateTime():   false
- $class_gepland (string)           : bg-warning p-3

首先,当我使用字符串变量$row['gepland']时,它返回true,因此我在DateTime对象new DateTime($row['gepland'])中更改了该值。 现在,语句的结果按预期返回false。 到目前为止还算不错,但是变量$class_gepland仍然是'bg-warning p-3',如调试结果的最后一行所示。

if (new DateTime($row['gepland']) < new DateTime()){
        $class_gepland = 'bg-warning p-3';
    }
else{
        $class_gepland = 'bg-success p-3';
    }

因此,尽管该语句返回false,但是$class_gepland'bg-warning p-3'而不是我所期望的'bg-success p-3'

1 个答案:

答案 0 :(得分:0)

我很难复制它。当geplan值较大时(将来),比较的结果为false,bg成功的p-3为正确值。

$row['gepland'] = "2019-03-11 00:00:00";
$class_gepland = false;

if (new DateTime($row['gepland']) < new DateTime()){
    $class_gepland = 'bg-warning p-3';
}
else {
    $class_gepland = 'bg-success p-3';
}

var_dump($class_gepland);

输出:

string(14) "bg-success p-3"

https://3v4l.org/IE425