Метод diff () объекта PHP DateTime, вызывающий проблемы с плавающими переменными

PHP v 5.3.5

У меня возникла проблема, когда DateTime-> diff, кажется, вертится с переменными (которые являются типом float), что не имеет никакого отношения к бизнесу. Я, очевидно, не понимаю, каким образом работает объект (новичок в PHP OOP) или ссылка на переменную вообще. Вот код, а затем я объясню вывод и что странно.

$interval_in_seconds = $settings['interval'] * 86400;
$checkin_in_seconds = floor($checkin['timestamp'] / 1000);
$next_checkin = $checkin_in_seconds + $interval_in_seconds;
$until_next = $next_checkin - time();

if($until_next > 0) {
$days = floor($until_next / 86400);

function secondsToTime($seconds) {
// Only here for var_dump testing:
global $settings, $interval_in_seconds, $until_next, $next_checkin;

$dtF = new DateTime("@0");
$dtT = new DateTime("@$seconds");

var_dump($until_next);
$return = $dtF->diff($dtT)->format('%h hours, %i minutes and %s seconds');
var_dump($until_next);

return $return;
}
$countdown = $days . ' days, ' . secondsToTime($until_next);
}

$settings['interval'] равно 12 и является поплавком.
$checkin['timestamp'] 1413926734544 и строка (пришла от JS, следовательно, миллисекунды)

Большую часть времени, но не все, $ settings [‘interval’] или любую другую переменную, которую я использую для отладки global будет отображать правильное значение для первого var_dump() но случайный символ для второго после $dtF->diff($dtT)

Обычно этот персонаж < или ~, но я также получил 0 или один из крестов Асии. Я думаю, что это зависит от того, какую переменную я сбрасываю.

Пример вывода для $settings['interval']

float(12) float(<)

Значение, возвращаемое из этой функции, является правильным и работает как исключение, однако, одна из моих других переменных попадает в темный переулок и избивается. Я не могу понять, почему. Ни одной из этих переменных не манипулируют, ничего (кажется) не передается по ссылке, и это имело место даже до того, как я использовал global

Что тут происходит?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]