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。と比較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 ドキュメントを確認してください。

于 2009-02-27T21:45:52.730 に答える