var_dump меняет результат функции? - PullRequest
0 голосов
/ 04 июля 2011

Я работаю над сценарием, который назначает автоматическую встречу, и фрагмент ниже предназначен для поиска доступного времени. Однако я столкнулся с чем-то, о чем я никогда раньше не слышал.

Когда я использую 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 скрипты возвращают нет. с var_dump возвращает первый свободный слот.
текущие значения, взятые из базы данных
1-> начинается 12:56:09 и заканчивается 12: 56: 09
2-> начинается 13:33:11 заканчивается 13: 33: 11

обновление var_dump ($ freetime); изменяет вывод

1 Ответ

0 голосов
/ 15 июля 2011

В текущих версиях PHP эта ошибка вызывается объектом DateInverval и вычислениями с объектами DateTime.Избегайте их использования и используйте вычисления в старом стиле с использованием методов Unix-Time.

...