1

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

为什么函数输出的结果与函数内部的代码不一样??我没有得到什么?我是否对自己的代码完全视而不见?到底是怎么回事?

4

1 回答 1

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

查看有关变量作用域的 PHP 文档。

于 2009-02-27T21:45:52.730 回答