【问题标题】:Why does this timestamp comparing always evaluate to true? [closed]为什么这个时间戳比较总是评估为真? [关闭]
【发布时间】:2012-08-03 08:24:58
【问题描述】:

我有以下代码来查看分配的时间是否已过。 对于我的演示,它应该全部评估为 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"]=> 字符串(13) "80.61.150.173" ["endtime"]=> 整数(1343988643) }
整数(1343981967)

bliep 数组(2) { ["ip"]=> 字符串(13) "80.61.150.173" ["endtime"]=> 整数(1343988649) }
整数(1343981967)

array(2) { ["ip"]=> 字符串(13) "80.61.150.173" ["endtime"]=> 整数(1343988650) }
整数(1343981967)

array(2) { ["ip"]=> 字符串(13) "80.61.150.173" ["endtime"]=> 整数(1343988664) }
整数(1343981967)

array(2) { ["ip"]=> 字符串(13) "80.61.150.173" ["endtime"]=> 整数(1343988682) }
整数(1343981967)

array(2) { ["ip"]=> 字符串(13) "80.61.150.173" ["endtime"]=> 整数(1343988723) }
整数(1343981967)

如您所见,那里有所有不应该存在的哔哔声。 时间戳是整数,当前时间小于保存时间。 它应该很容易比较,但它总是评估为真,而现在

这是怎么回事?

这不是我的服务器,因为此代码在 http://writecodeonline.com/php/ 上的计算结果也为 true

【问题讨论】:

  • 尝试回显 $obj['endtime'] - time() 而不是 bliep 以查看错误在哪里。

标签: php if-statement timestamp compare


【解决方案1】:

如果您的if 声明,我相信最后有一个错字;

应该是

if($obj['endtime'] <= time());

而不是

if($obj['endtime'] <= time())

【讨论】:

  • omg...我现在感觉很愚蠢...它从来没有抛出错误...blush将在 11 分钟内接受您的回答。
【解决方案2】:

因为

if($obj['endtime'] <= time());

应该是

if($obj['endtime'] <= time())//without the semicolon

虽然你有答案,但我想知道为什么它没有抛出错误会很好。

基本上if($obj['endtime'] &lt;= time()); 被解释为 或单行if 语句:

if($obj['endtime'] <= time())
    echo 'foo';
else
    echo 'bar';

但是由于if 语句和分号之间没有语句,php 将继续执行,并且-相当烦人的 IMO-忽略花括号。我不确定这一点,但如果您在下一行有一个else{},您可能会遇到错误...
一个很好的例子,说明对各种语法的支持如何让您头疼。也就是说,我喜欢你的编码风格,在新行上保持打开和关闭卷曲。提高可读性恕我直言。

【讨论】:

  • 感谢您的评论。我至少会期待一个关于 unneded 语法或花括号的东西的“警告”。但很可惜,它没有。谢谢你的回答和夸奖!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-03
  • 1970-01-01
  • 1970-01-01
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-19
相关资源
最近更新 更多