我知道这是基本的布尔逻辑,但我被卡住了:
我正在遍历数据库结果,对于每一个我需要检查以下条件:
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。
答案 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)))
也许这个可以缩短,但我想不出如何。