解决条件中多个 OR 语句的否定
Resolving negation of multiple OR statements in a conditional
我有点难以理解多个 OR 语句的否定。
在 AND 的情况下,假设我有以下内容:
$a = 'john';
$b = 'mark';
$c = 'luke';
if(!($a == 'john' && $b == 'mark' && $c == 'luke'))
{
echo "Not All Apostles";
}
显然没有echo/output,因为所有条件都符合。此外,否定有点容易理解。换句话说,如果我使用 1
表示 true,0
表示 false,条件只能在解析为 111
时匹配,因此对于否定,条件为真,如果它不是 111
即否定匹配如果我有 101
、100
、001
等
那么当我有以下情况时会发生什么:
if(!($a == 'john' || $b == 'david' || $c == 'luke'))
{
echo "???";
}
如果没有否定,如果[使用前面介绍的数字符号]条件解析为 000
以外的任何内容,它将解析为真,即如果条件解析为真,则必须至少有一个匹配项否定不存在。
那么现在的否定到底发生了什么?
我认为您对按位与布尔比较感到困惑:
您使用的是布尔比较 &&
和 ||
而不是按位运算符 &
和 |
。
你条件中的每个比较都计算为 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))
我有点难以理解多个 OR 语句的否定。
在 AND 的情况下,假设我有以下内容:
$a = 'john';
$b = 'mark';
$c = 'luke';
if(!($a == 'john' && $b == 'mark' && $c == 'luke'))
{
echo "Not All Apostles";
}
显然没有echo/output,因为所有条件都符合。此外,否定有点容易理解。换句话说,如果我使用 1
表示 true,0
表示 false,条件只能在解析为 111
时匹配,因此对于否定,条件为真,如果它不是 111
即否定匹配如果我有 101
、100
、001
等
那么当我有以下情况时会发生什么:
if(!($a == 'john' || $b == 'david' || $c == 'luke'))
{
echo "???";
}
如果没有否定,如果[使用前面介绍的数字符号]条件解析为 000
以外的任何内容,它将解析为真,即如果条件解析为真,则必须至少有一个匹配项否定不存在。
那么现在的否定到底发生了什么?
我认为您对按位与布尔比较感到困惑:
您使用的是布尔比较 &&
和 ||
而不是按位运算符 &
和 |
。
你条件中的每个比较都计算为 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))