如何比较PHP中函数内的unix时间戳(数字)?

时间:2009-02-27 21:43:42

标签: php function timestamp

好吧,我担心这只是我忘记了一些关于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 个答案:

答案 0 :(得分:7)

您没有将$closingDate传递给函数。他们正在将timenull进行比较。

尝试:

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;
}

查看variable scoping上的PHP文档。