在PHP中使用IF语句的奇怪行为

Zub*_*ir1 1 php

我注意到我的脚本中有一些奇怪的行为,不知道为什么它会发生.

if ($date != 'NOW()' ||  $date != 'NULL')
{
   // throw error      
} else {
   // run functions
}
Run Code Online (Sandbox Code Playgroud)

我在我的一个函数中有一个类似于上面的IF语句,我传递了'NULL'我的函数中的值,它正在接收.但是在与IF语句进行比较时,它不起作用.它总是跳过其他声明.

更新:
下面是我的功能的完整代码,我希望它有所帮助.

public function setLastLoginDate( $date )
{
    if (isset($date) && !empty($date))
    {
        if ($date != 'NOW()' ||  $date != 'NULL' || is_datetime(convertDateTimeToSql($date)) == false)
        {
            $this->errors['user_last_login'] = 'invalid date specified.';
        } else {
            this->properties['user_last_login'] = $date;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

最后更新
使用&&确实可以工作而不是||,但我从不打算使用&&.如果这就是它的假设那么我想我必须重新阅读.

是不是&&检查两个变量是否返回true?喜欢if (is_string($foo) && strlen($foo) > 1)?但我想检查变量是否包含任何值

但这也对我有用:

if ( $date == 'NOW()' ||  $date == 'NULL' || is_datetime(convertDateTimeToSql($date)) == true )
{
    $this->properties['user_last_login'] = $date;
} else {
    $this->errors['user_last_login'] = 'invalid date specified.';
}
Run Code Online (Sandbox Code Playgroud)

做了一些测试和它的工作,因为我希望它与上述. 如上所述使用它有什么问题吗?

谢谢

mar*_*kli 6

您询问条件是否不是值其他值,这将始终返回true.可能你想使用an 不是(&&而不是||).