我有以下代码来查看分配的时间是否已经过去。对于我的演示,它应该全部评估为 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>";
}
}
此代码计算结果如下:
数组(2){[“ip”]=>字符串(13)“80.61.150.173”[“endtime”]=>int(1343988643)}
int(1343981967)bliep array(2) { ["ip"]=> string(13) "80.61.150.173" ["endtime"]=> int(1343988649) }
int(1343981967)哔哔
数组(2){[“ip”]=>字符串(13)“80.61.150.173”[“endtime”]=>int(1343988650)}
int(1343981967)哔哔
数组(2){[“ip”]=>字符串(13)“80.61.150.173”[“endtime”]=>int(1343988664)}
int(1343981967)哔哔
数组(2) { ["ip"]=> 字符串(13) "80.61.150.173" ["endtime"]=> int(1343988682) }
int(1343981967)哔哔
数组(2){[“ip”]=>字符串(13)“80.61.150.173”[“endtime”]=>int(1343988723)}
int(1343981967)哔哔
正如你所看到的,那里有所有不应该存在的哔哔声。时间戳是整数,当前时间小于保存时间。它应该很容易比较,但它总是评估为真,而现在 < 比存储的时间戳。
这里发生了什么?
这不是我的服务器,因为此代码在http://writecodeonline.com/php/上的计算结果也为 true