0

割り当てられた時間が経過したかどうかを確認する次のコードがあります。私のデモでは、すべて false と評価され、何も起こらないはずです。これまでに起こったことは、たとえそれを >=

なぜこの奇妙な動作をするのですか?

$data = '[{"ip":"80.61.150.173","endtime":1343988643},{"ip":"80.61.150.173","endtime":1343988649},{"ip":"80.61.150.173","endtime":1343988650},{"ip":"80.61.150.173","endtime":1343988664},{"ip":"80.61.150.173","endtime":1343988682},{"ip":"80.61.150.173","endtime":1343988723}]';
$json = json_decode($data,true);
foreach($json as $key => $obj)
    {
    var_dump($obj);
    echo "<BR>";
    var_dump(time());
    echo "<BR>";
    if($obj['endtime'] <= time());
        {
        echo "<BR>bliep<P>";
        }
    }

このコードは次の結果に評価されます。

array(2) { ["ip"]=> string(13) "80.61.150.173" ["endtime"]=> int(1343988643) }
int(1343981967)

bleep array(2) { ["ip"]=> string(13) "80.61.150.173" ["endtime"]=> int(1343988649) }
int(1343981967)

ブリープ

array(2) { ["ip"]=> string(13) "80.61.150.173" ["endtime"]=> int(1343988650) }
int(1343981967)

ブリープ

array(2) { ["ip"]=> string(13) "80.61.150.173" ["endtime"]=> int(1343988664) }
int(1343981967)

ブリープ

array(2) { ["ip"]=> string(13) "80.61.150.173" ["endtime"]=> int(1343988682) }
int(1343981967)

ブリープ

array(2) { ["ip"]=> string(13) "80.61.150.173" ["endtime"]=> int(1343988723) }
int(1343981967)

ブリープ

ご覧のとおり、あってはならないすべてのブリープがあります。タイムスタンプは整数で、現在の時刻は保存された時刻よりも小さいです。簡単に比較できるはずですが、常に true と評価されますが、現在は保存されているタイムスタンプよりも小さくなっています。

何が起きてる?

このコードはhttp://writecodeonline.com/php/でもtrueと評価されるため、私のサーバーではありません

4

2 に答える 2