解决条件

时间:2016-03-21 01:41:12

标签: php conditional logical-operators

我在解决多个OR语句的否定方面遇到了一些麻烦。

在AND的情况下,假设我有以下内容:

$a = 'john';
$b = 'mark';
$c = 'luke';

if(!($a == 'john' && $b == 'mark' && $c == 'luke'))
{
    echo "Not All Apostles";
}

很明显没有回声/输出,因为所有条件都匹配。此外,否定有点容易理解。换句话说,如果我使用1表示true而0表示false,则条件只能在仅解析为111时匹配,因此如果使用否定,则条件为真,如果如果我有111101100等,则不是001即否定匹配。

当我有以下内容时会发生什么:

if(!($a == 'john' || $b == 'david' || $c == 'luke'))
{
    echo "???";
}

没有否定,如果[使用前面介绍的数字符号]条件解析为除000之外的任何内容,它将解析为true,即如果否定,必须至少有一个匹配条件才能解析为true不在场。

那么,否定存在究竟发生了什么?

1 个答案:

答案 0 :(得分:0)

我认为你对bitwise vs boolean comparison感到困惑:

您使用的是布尔比较&&||,而不是按位运算符&|

条件中的每次比较都会评估为truefalse

所以:

if(!($a == 'john' && $b == 'mark' && $c == 'luke'))
{
   echo "Not All Apostles";
}

实际上是:

if(!(true && true && true))
{
   echo "Not All Apostles";
} 

哪个是if(false)

你的第二个例子:

if(!(true || true || true))
{ 
     echo "???";
  }

变为

if(!($a == 'john' || $b == 'mark' || $c == 'luke'))
{ 
     echo "???";
  }

这也是

if(!(true))