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