Как сравнить Unix метки времени (числа) внутри функции в PHP? - PullRequest
1 голос
/ 28 февраля 2009

Хорошо, я боюсь, что я просто забыл какую-то маленькую глупость о PHP, но я просто не могу понять, что здесь происходит.

Тестовый код:

<?php header('Content-Type: text/plain');

$closingDate     = mktime(23, 59, 59, 3, 27, 2009);

function f1()
{
    return time() > $closingDate;
}
function f2()
{
    return time() < $closingDate;
}

printf('    Time: %u
Closing: %u

t > c: %u
f1   : %u

t < c: %u
f2   : %u', 
    time(), 
    $closingDate, 
    time() > $closingDate,
    f1(), 
    time() < $closingDate,
    f2());

Проблема в том, что вывод вообще не имеет смысла для меня. И я не понимаю, почему так получается:

Time: 1235770914
Closing: 1238194799

t > c: 0
f1   : 1

t < c: 1
f2   : 0

Почему функция не выдает тот же результат, что и код внутри функции ?? Что я не получаю здесь? Я выглядел полностью слепым из-за собственного кода? Что происходит?

1 Ответ

7 голосов
/ 28 февраля 2009

Вы не передаете $closingDate функциям. Они сравнивают time с null.

Попробуйте:

function f1()
{
    global $closingDate;
    return time() > $closingDate;
}
function f2()
{
    global $closingDate;
    return time() < $closingDate;
}

Или:

// call with f1($closingDate);
function f1($closingDate)
{
    return time() > $closingDate;
}

// call with f2($closingDate);
function f2($closingDate)
{
    return time() < $closingDate;
}

Ознакомьтесь с документацией PHP по область видимости переменной .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...