基本布尔逻辑 - 仅当另一个条件为真时如何测试条件

时间:2011-07-25 20:48:23

标签: php conditional logic boolean

我知道这是基本的布尔逻辑,但我被卡住了:

我正在遍历数据库结果,对于每一个我需要检查以下条件:

if($old_value != $new_value)

如果以上情况属实,则操作为:

$old_value = $new_value;

但是存在次要条件。如果行的类型为“date”,我还需要检查$new_value是否为空,但操作仍然相同。现在,我这样做:

if($old_value != $new_value) {
     if($type != date) {
         $old_value = $new_value;
     } elseif(!empty($new_value)) {
         $old_value = $new_value;
     }

我已经过度简化了上述内容,但实际上单行动作实际上是几行,我知道我不需要根据次要条件重复这些行。

但我对于将内在条件与外在条件结合起来的正确方法感到茫然。如果我这样做:

if(($old_value != $new_value) && ($type == 'date' && !empty($new_value))

然后它返回true的唯一时间是行的类型为date。

2 个答案:

答案 0 :(得分:5)

尝试:

  if(($old_value != $new_value) && ($type != 'date' || !empty($new_value))

应该这样做。如果您需要帮助了解原因,请告诉我。

答案 1 :(得分:2)

if(($old_value != $new_value) && ($type != 'date' || ($type == 'date' && !empty($new_value))) 也许这个可以缩短,但我想不出如何。