编程语言
首页 > 编程语言> > PHP DateTime DateInterval isset在var_dump之后更改

PHP DateTime DateInterval isset在var_dump之后更改

作者:互联网

此对象中的任何变量都是!isset(),但是如果我是var_dump($interval)或print_r($interval),则这些变量将成为isset().这也适用于empty()/!empty().

因此在$interval-> i下面的代码中,最初是!isset(),但在我var_dump($interval)之后是isset().

$future = new DateTime("2018-08-24");
$now = new DateTime();

$interval = $future->diff($now);

if (isset($interval->i)) {
    echo 'isset' . $interval->i;
} else {
    echo 'not isset' . $interval->i;
}

var_dump($interval);

if (isset($interval->i)) {
    echo 'isset' . $interval->i;
} else {
    echo 'not isset' . $interval->i;
}

可能是什么原因导致它们最初是!isset和空,但之后是isset和!empty?

解决方法:

我能够重现同样的错误.您甚至可以用property_exists()换出isset()并获得相同的奇怪行为.

在php的bug数据库中做了一些搜索,看起来他们在7.0.5版中对其进行了修复:

https://bugs.php.net/bug.php?id=69587

标签:dateinterval,datetime,php
来源: https://codeday.me/bug/20191025/1930979.html