我想在PHP中的boolean if语句中仔细检查一些有关多个条件的内容。鉴于我写道:
if(!empty($_POST) && !isset($_POST['report_btn'])) {...}
可以重写为
if(! ( empty($_POST) && isset($_POST['report_btn']) ) ) {...}
我想要删除其中一个感叹号,看看我是否可以使代码更整洁一些。如果POST数据已发送到页面但未设置'report_btn'
值,则逻辑是查看是否可以执行代码。
答案 0 :(得分:2)
布尔逻辑说
!A && !B == !(A || B)
!A || !B == !(A && B)
答案 1 :(得分:2)
了解如何正确转换逻辑表达式会更好。
阅读De Morgan's laws,其中包括您的案例。
"不是(A和B)"与"(不是A)或(不是B)"
相同"不是(A或B)"与"(不是A)和(不是B)"相同。
答案 2 :(得分:2)
不,您不能将上述条件写成以下条件:
<强>原因:强>
有:
if(! ( empty($_POST) && isset($_POST['report_btn']) ) ) {...}
结果矩阵将:
first_statement second_statement result
true true false
true false true
false true true
false false true
以下是
if(!empty($_POST) && !isset($_POST['report_btn'])) {...}
结果矩阵将是:
first_statement second_statement result
true true false
true false false
false true false
false false true
这意味着两个代码都不相似。