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


Basic Boolean Logic -- How to test for condition only if another condition is true

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

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

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))

那么只有当行类型为date时,它才会返回true。

尝试:

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

应该可以了。

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