我有一个if条件,由于某种原因,即使有一个空的时间戳(一个空字符串),我的其他条件仍在执行。
if (($limit_by == 0 && $latest_timestamp < $historical_timestamp) ||
empty($latest_timestamp)) {
//stuff here
}
else {
//other stuff
$year = date("Y", $latest_timestamp);
}
因此,如果$latest_timestamp
为空,我仍然偶尔会有其他条件触发器(由于$ latest_timestamp未设置,导致1969日期)。我还尝试了!isset()
$ latest_timestamp进行测试,看看是否有帮助。也没有。
是否有一些操作顺序我在这里丢失会导致其他两个条件覆盖空检查?据我所知,他们应该只增加触发条件的项目范围。
答案 0 :(得分:4)
我在这里缺少一些操作顺序会导致其他两个条件覆盖空检查吗?
否强>
但您需要验证$latest_timestamp
已设置。否则条件$latest_timestamp < $historical_timestamp
将始终为真,因为它被强制转换为0。
我建议将isset($latest_timestamp)
添加到您的第一个条件中,或者更好的是,通过将第二个条件移到前面来利用short circuit evaluation。
if (empty($latest_timestamp)
|| ($limit_by == 0 && $latest_timestamp < $historical_timestamp))
答案 1 :(得分:1)
我建议你首先检查$latest_timestamp
的空虚,然后再检查它是否低于其他时间戳。 `假设与其他时间戳相比,空值将转换为0,我想,您的第一个条件可以评估为true
。
答案 2 :(得分:0)
尝试使用
进行检查$latest_timestamp == '0000-00-00 00:00:00'
而不是检查空($ latest_timestamp)。因为默认的空时间戳值为00:00:00&#39;