此对象中的任何变量都是!isset()但如果我是var_dump($ interval)或print_r($ interval),则这些变量将变为isset()。这也适用于empty()/!empty()。
所以在$ interval->下面的代码中,我最初是!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和empty,但之后是isset和!空的?
答案 0 :(得分:2)
我能够重现同样的错误。你甚至可以用property_exists()换掉isset()并得到同样的奇怪行为。
在php的bug数据库中进行了一些搜索,看起来他们在7.0.5版中修复了它:
答案 1 :(得分:2)
我不确定您使用的是哪个版本的PHP但是使用PHP版本7.0.5。这是一个错误。