PHP nasıl bir işlev içinde unix zaman damgaları (sayılar) karşılaştırılır?

1 Cevap php

Tamam, bu sadece beni PHP ile ilgili bazı küçük aptal şeyi unutmuş olduğunu korku, ama ben sadece burada neler olduğunu anlamaya görünüyor olamaz.

Test code:

<?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());

Sorun çıktı bana hiç mantıklı olmamasıdır. Öyle gibi çıkıyor ve neden ben alamadım:

Time: 1235770914
Closing: 1238194799

t > c: 0
f1   : 1

t < c: 1
f2   : 0

Neden değil işlevi çıktılarının işlevi içinde kodu olarak aynı sonucu mu? Ben burada ne almıyorum? Ben kendi kodu kendimi tamamen kör baktınız mı? Neler oluyor?

1 Cevap

Sen $closingDate işlevlerine geçen değiliz. Onlar time null karşı karşılaştırdığınız.

Deneyin:

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

Veya:

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

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

variable scoping üzerine PHP belgelerine göz atın.