【问题标题】:PHP DateTime DateInterval isset changes after var_dumpPHP DateTime DateInterval isset 在 var_dump 之后更改
【发布时间】:2018-02-02 22:33:48
【问题描述】:

这个对象中的任何变量都是 !isset() 但如果我使用 var_dump($interval) 或 print_r($interval),这些变量就会变成 isset()。这也适用于 empty()/!empty()。

所以在下面的代码中 $interval->i 最初是 !isset() 但 isset() 在 I var_dump($interval) 之后。

$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?

【问题讨论】:

    标签: php datetime dateinterval


    【解决方案1】:

    我能够重现相同的错误。你甚至可以用 property_exists() 替换 isset() 并获得相同的奇怪行为。

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

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

    【讨论】:

      【解决方案2】:

      不确定您使用的是哪个版本的 PHP,但请使用 PHP 版本 7.0.5。它是一个错误。

      这应该很有用:https://bugs.php.net/bug.php?id=69587

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-21
        • 2011-06-05
        • 1970-01-01
        • 1970-01-01
        • 2014-12-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多