我知道這是基本的布爾邏輯,但我堅持:基本布爾邏輯 - 如何測試條件僅當其它條件爲真
我通過數據庫結果循環,併爲每一個我需要檢查以下條件:
if($old_value != $new_value)
如果上述屬實,動作是:
$old_value = $new_value;
但有一個次要條件。如果該行的類型是「日期」,我還需要檢查$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的唯一時間是當該行是日期類型。
我不確定我是否理解。具體來說,第二個子句中的OR不會在每次'$ new_value'爲空時返回true,而不是在類型爲'date'時? – Anthony
是的,會的。當old_value與new_value AND不同(我們不是談論日期或者我們正在談論某個日期,但是$ new_value是空的)時,整個表達式是正確的。 – Patrick87
哦,我明白了,'!empty($ new_value)'是否爲真並不重要,因爲'$ type!='date''也是真的,所以條件通過並且動作發生。它還需要我花一些時間才能讓它矇住眼睛,但它開始有意義。謝謝! – Anthony