var_dump改变了函数的结果?

时间:2011-07-04 12:08:34

标签: php datetime var-dump

我正在编写一个自动约会的脚本,下面的代码片段用于查找可用时间。但是,我遇到过以前从未听说过的事情。

当我在我的脚本中使用var_dump来查看变量时(我总是在编码时这样做),脚本运行正常。但是,当我删除这些行时,脚本停止按预期工作。因为我不能使用var_dump进行调试,因为它使脚本运行。

function getfirstfree($length, $limit) {
    $length = new DateInterval('PT' . $length . 'M');
    $table = "randevu";
    $today = date('Y-m-d', time());
    $q = $this->db->get_where('randevu', array('date' => $today));
    $events = $q->result_array();
    if ($q->num_rows() > 0) {
        for ($i=0; $i < sizeof($q); $i += 1) { 
            $c_ends = new DateTime($events[$i]['ends']);
            $n_starts = new DateTime($events[$i+1]['starts']);
            $freetime = $c_ends->diff($n_starts);
            $length_w_break = $length;
            $length_w_break->i = $length_w_break->i + 10;
            var_dump($length_w_break);
            var_dump($freetime);
            if ($freetime > $length_w_break) {
                echo "ok";
                return $c_ends->add(new DateInterval('PT10M'));
            }
            else {
                return "no";
            }
        }
    }

}

没有var_dump脚本返回no。使用var_dump,它返回第一个空闲插槽 从数据库中获取的当前值为
1→开始12:56:09结束12:56:09
2→开始13:33:11结束13:33:11

更新 var_dump($ freetime);改变输出

1 个答案:

答案 0 :(得分:0)

在当前的PHP版本中,DateInverval对象和使用DateTime对象的计算会导致此错误。避免使用它们并使用旧式计算和unix-time方法。