【发布时间】:2016-03-21 01:41:12
【问题描述】:
我很难理解多个 OR 语句的否定。
在 AND 的情况下,假设我有以下内容:
$a = 'john';
$b = 'mark';
$c = 'luke';
if(!($a == 'john' && $b == 'mark' && $c == 'luke'))
{
echo "Not All Apostles";
}
很明显,没有回显/输出,因为所有条件都匹配。此外,否定有点容易理解。换句话说,如果我使用1 为真,0 为假,则条件只有在解析为111 时才能匹配,因此如果不是111,则条件为真即如果我有101、100、001 等,则否定匹配。
那么当我有以下情况时会发生什么:
if(!($a == 'john' || $b == 'david' || $c == 'luke'))
{
echo "???";
}
没有否定,如果[使用前面介绍的数字符号]条件解析为除000之外的任何内容,它将解析为true,即如果否定不是,则必须至少有一个匹配项才能解析为true展示。
那么否定存在到底会发生什么?
【问题讨论】:
-
我不确定我是否明白了你的问题,但除了
000之外,你得到 TRUE 的否定。 -
en.wikipedia.org/wiki/De_Morgan's_laws
not(A || B) ~ not(A) && not(B)。还有not(A && B) ~ not(A) || not(B) -
@Rizier123 我认为除了
000之外的任何东西都是 TRUE 没有否定,即只有至少有一个匹配它才会是 TRUE 没有否定?!
标签: php conditional logical-operators