if语句中的布尔条件

时间:2014-10-16 08:49:26

标签: php conditional-statements

我想在PHP中的boolean if语句中仔细检查一些有关多个条件的内容。鉴于我写道:

if(!empty($_POST) && !isset($_POST['report_btn'])) {...}

可以重写为

if(! ( empty($_POST) && isset($_POST['report_btn']) ) ) {...}

我想要删除其中一个感叹号,看看我是否可以使代码更整洁一些。如果POST数据已发送到页面但未设置'report_btn'值,则逻辑是查看是否可以执行代码。

3 个答案:

答案 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

这意味着两个代码都不相似。