反转逻辑条件或条件语句

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

根据De Morgan's laws

!(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' 与 '&&' 作为运算符