好吧,我担心这只是我忘记了一些关于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
为什么函数输出的结果与函数内的代码不一样?我没有到这里来的是什么?我是否完全看不起自己的代码?发生了什么事?
答案 0 :(得分:7)
您没有将$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;
}
查看variable scoping上的PHP文档。