Php 为什么我的时间价值比较不能正常工作? if( isset($get['when'])) &&!empty($get['when'])) &&!strotime($get['when'])) &&strotime($get['when'])

Php 为什么我的时间价值比较不能正常工作? if( isset($get['when'])) &&!empty($get['when'])) &&!strotime($get['when'])) &&strotime($get['when']),php,Php,例如,strottime($get['when'])=2010-12-06,这小于ofc的时间() 如果我删除&&!空($get['when'])它工作正常。有什么建议吗?这是绿色代码中非常有趣的部分 &&!strotime($get['when'])和&strotime($get['when'])您的问题是!strotime($get['when'])strotime仅在失败时返回false,所有其他值都被视为true,因此您的语句总是false。我想你想要: && !strt

例如,
strottime($get['when'])=2010-12-06
,这小于ofc的时间()


如果我删除
&&!空($get['when'])
它工作正常。有什么建议吗?

这是绿色代码中非常有趣的部分
&&!strotime($get['when'])和&strotime($get['when'])
您的问题是
!strotime($get['when'])
strotime
仅在失败时返回false,所有其他值都被视为
true
,因此您的语句总是false。我想你想要:

&& !strtotime($get['when'])  && strtotime($get['when'])

生存还是毁灭,这是个问题。
!如果在
1.1.1970 00:00:00
之后经过一段时间,则strotime($get['when'])
将始终计算为
false
,使整个表达式
为false
。您可以轻松地测试它:
var_dump(!strotime('2010-12-06')为您提供
bool(false)
&& !strtotime($get['when'])  && strtotime($get['when'])
(strtotime($get['when']) !== false)