【问题标题】:var_dump changes the result of the function?var_dump 改变函数的结果?
【发布时间】:2011-09-28 02:43:03
【问题描述】:

我正在编写一个自动预约的脚本,下面的 sn-p 用于查找可用时间。但是,我遇到了一些我以前从未听说过的东西。

当我在脚本中使用 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);改变输出

【问题讨论】:

  • 您提供了很多信息,但最重要的是什么:var_dump 打印是什么
  • var_dump($freetime); changes the output --- 这是不可能的。我打赌是啤酒。
  • @Jon 打印出来 object (DateInterval)#20 (8) { ["y"]=&gt; int(0) ["m"]=&gt; int(0) ["d"]=&gt; int(0) ["h"]=&gt; int(0) ["i"]=&gt; int(37) ["s"]=&gt; int(2) ["invert"]=&gt; int(0) ["days"]=&gt; int(6015) }
  • var_dump() 仅输出有关变量及其内容的信息,它不会更改转储的变量。因此,它只能更改输出,但不能更改函数内的程序流程。请说明您如何确定您的功能是否按预期运行。
  • @hakre,我也知道。这很奇怪。我打电话给我的函数,我需要 20 分钟的空闲时间来约会getfirstfree($length)(第二个参数不被视为 atm)。我的表中有一个空格,当我 var_dump 时,脚本和 if 语句运行良好,返回return $c_ends-&gt;add(new DateInterval('PT10M'));。当我删除 var_dump 时,它会转到 else 语句并返回 "no"

标签: php datetime var-dump


【解决方案1】:

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

【讨论】:

  • 我见过的最糟糕的接受答案。应该使用什么方法?
猜你喜欢
  • 2019-02-14
  • 1970-01-01
  • 2021-06-11
  • 2016-07-11
  • 2021-03-14
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
相关资源
最近更新 更多