反转逻辑条件或条件语句
Invert logical conditions or conditional statements
我想手动反转逻辑条件。
假设我们有这个:
$a = true;
$b = false;
if (!$a or $b) {
echo 'true';
}
if (!(!$a or $b)) { //I want to solve !(!$a or $b) to a form without ()
echo 'true 2';
}
规则是什么?
所以假设
!(!$a or $b) === true
等同于 !$a or $b === false
.
所以!$a or $b
一定是假的,这意味着!$a
和$b
应该都是假的,这反过来意味着$a
一定是真而$b
必须为假。
最后,这个!(!$a or $b)
相当于$a and !$b
。
$a $b !(!$a or $b) $a and !$b
T T F F
T F T T
F T F F
F F F F
我们还可以使用布尔代数和 De Morgan’s theorem
证明这一点
¬(¬A∨B) = ¬(¬A)∧¬B = A∧¬B
!(A and B) == !A or !B
!(A or B) == !A and !B
因此
!(!$a or $b) == !!$a and !$b == $a and !$b
你也可以画个评价table:
$a $b !(!$a or $b) $a and !$b
true true false false
true false true true
false true false false
false true false false
旁注:
当你有像 $val = true and false;
这样的任务时,请小心 and
/or
,参见。 'AND' 与 '&&' 作为运算符
我想手动反转逻辑条件。
假设我们有这个:
$a = true;
$b = false;
if (!$a or $b) {
echo 'true';
}
if (!(!$a or $b)) { //I want to solve !(!$a or $b) to a form without ()
echo 'true 2';
}
规则是什么?
所以假设
!(!$a or $b) === true
等同于 !$a or $b === false
.
所以!$a or $b
一定是假的,这意味着!$a
和$b
应该都是假的,这反过来意味着$a
一定是真而$b
必须为假。
最后,这个!(!$a or $b)
相当于$a and !$b
。
$a $b !(!$a or $b) $a and !$b
T T F F
T F T T
F T F F
F F F F
我们还可以使用布尔代数和 De Morgan’s theorem
证明这一点¬(¬A∨B) = ¬(¬A)∧¬B = A∧¬B
!(A and B) == !A or !B
!(A or B) == !A and !B
因此
!(!$a or $b) == !!$a and !$b == $a and !$b
你也可以画个评价table:
$a $b !(!$a or $b) $a and !$b
true true false false
true false true true
false true false false
false true false false
旁注:
当你有像 $val = true and false;
这样的任务时,请小心 and
/or
,参见。 'AND' 与 '&&' 作为运算符