条件陈述的含义

时间:2011-03-05 14:20:32

标签: php boolean-logic

在一段代码中,我发现了以下条件语句:

if ( !defined('MY_CONSTANT') || MY_CONSTANT !== false )

我想知道这可能实现的目标只能通过简单说明来实现:

if ( MY_CONSTANT !== false )

.. 是不是这样,如果MY_CONSTANT!== false,那么它也必须被定义,使第一个例子的第一个参数变得多余,或者我错过了什么?

5 个答案:

答案 0 :(得分:3)

如果此时常量可能未定义,则尝试访问它将在正确配置的服务器上发出警告。您不希望那些填满您的错误日志,因此defined()检查。

答案 1 :(得分:2)

只要其中一个条件成立,or条件就会停止评估。

由于条件是从左到右计算的,并且尝试检查未定义的常量是否会产生异常,因此首先检查它是否已定义,然后检查其值。

如果未定义常量,则if语句退出,并且不会尝试检查该值。

答案 2 :(得分:1)

您的版本和第一个版本不一样:

如果没有定义,第一个版本的第一个条件将为真,它将“触发”。

如果未定义,则您的版本将为false。 (好吧,至少提出错误;))

答案 3 :(得分:0)

不,因为如果没有定义MY_CONSTANT,PHP会给你一个错误信息:

Notice:  Use of undefined constant MY_CONSTANT

答案 4 :(得分:0)

如果未定义MY_CONSTANT,PHP将做两件事:

  • 尝试使用时记录和/或显示错误
  • MY_CONSTANT解释为文字字符串"MY_CONSTANT"