反转逻辑条件或条件语句

时间:2018-05-05 00:08:29

标签: php conditional 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';
}

有什么规则?

2 个答案:

答案 0 :(得分:1)

所以说吧

!(!$a or $b) === true!$a or $b === false相同。

因此!$a or $b必须为false,这意味着!$a$b都应为false,这意味着$a必须为true且$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

答案 1 :(得分:1)

根据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

您还可以制定评估表:

$a     $b     !(!$a or $b)  $a and !$b
true   true   false         false
true   false  true          true
false  true   false         false
false  true   false         false

旁注:

当您拥有and等作业时,请小心or / $val = true and false;,参见'AND' vs '&&' as operator