我想手动反转逻辑条件。
假设我们有这个:
$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';
}
有什么规则?
答案 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)
!(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