[PHP] 德摩根定律 (De Morgan's Laws) 與 PHP 實戰應用
在程式開發的世界裡,邏輯判斷(Logic)是我們的基本功。但你是否曾經在寫 if 判斷式時,為了那層層疊疊的括號和驚嘆號 ! 而感到頭暈目眩? 特別是當你需要對一個「複雜條件」進行「反向思考」時,很容易就會寫出連自己過兩週後都看不懂的程式碼。這時候, 德摩根定律 (De Morgan's Laws) 就是你的救星。 什麼是德摩根定律? 簡單來說,德摩根定律是用來處理「邏輯非(NOT)」、「邏輯且(AND)」與「邏輯或(OR)」之間轉換關係的規則。它主要有兩條定律,轉換成工程師熟悉的語言就是: 定律一: !(A && B) 等同於 !A || !B 翻譯: 「並非(A 且 B)」 等於 「非 A 或者 非 B」 定律二: !(A || B) 等同於 !A && !B 翻譯: 「並非(A 或 B)」 等於 「非 A 且 非 B」 口訣很簡單: 把 ! 丟進括號裡, && 變 || , || 變 && 。 PHP 實戰應用範例 讓我們來看看在 PHP 開發中,如何運用這個定律來讓程式碼更乾淨。 案例一:使用者登入權限檢查 假設我們要判斷一個使用者「不能登入」的情況。登入成功的條件是: 帳號存在 (Exists) 且 密碼正確 (Correct) 。 如果不使用德摩根定律,我們可能會直覺地寫出這樣的否定判斷: // 寫法 A:直覺但層次較深 if ( !($userExists && $passwordCorrect) ) { return '登入失敗'; } 雖然邏輯正確,但人類的大腦在處理「非(A 且 B)」這種邏輯時比較費力。運用德摩根定律第一條 !(A && B) => !A || !B ,我們可以將其重構為: // 寫法 B:更符合語意的線性思考 if (!$userExists || !$passwordC...