我在解决多个OR语句的否定方面遇到了一些麻烦。
在AND的情况下,假设我有以下内容:
$a = 'john';
$b = 'mark';
$c = 'luke';
if(!($a == 'john' && $b == 'mark' && $c == 'luke'))
{
echo "Not All Apostles";
}
很明显没有回声/输出,因为所有条件都匹配。此外,否定有点容易理解。换句话说,如果我使用1
表示true而0
表示false,则条件只能在仅解析为111
时匹配,因此如果使用否定,则条件为真,如果如果我有111
,101
,100
等,则不是001
即否定匹配。
当我有以下内容时会发生什么:
if(!($a == 'john' || $b == 'david' || $c == 'luke'))
{
echo "???";
}
没有否定,如果[使用前面介绍的数字符号]条件解析为除000
之外的任何内容,它将解析为true,即如果否定,必须至少有一个匹配条件才能解析为true不在场。
那么,否定存在究竟发生了什么?
答案 0 :(得分:0)
我认为你对bitwise vs boolean comparison感到困惑:
您使用的是布尔比较&&
和||
,而不是按位运算符&
和|
。
条件中的每次比较都会评估为true
或false
:
所以:
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))