はじめに
実務にて、ド・モルガンの法則って何ですかと聞き返されることがあります。中学数学の集合と論理で学習しているはずですが、大人になると忘れちゃいますよね。そこで、何度も説明するのがめんどくさいので、PHP の条件式でわかりやすく記事にしてみました。
検証環境
解説
ド・モルガンの法則 は、イギリスの数学者 オーガスタス・ド・モルガン が発案した法則です。
この法則は、条件式の真(true)と偽(false)・論理和(or, ||)と論理積(and, &&)を入れ替えたら元の結果と同じになるよねってやつです。
例えば、下記の条件式は結果が同じです。
!($p || $q) // 元の条件式
!$p && !$q // ド・モルガンの法則
!($p && $q) // 元の条件式
!$p || !$q // ド・モルガンの法則
で、実務で何の役に立つんですかって話なんですけど、下記のような PHP の if 構文 があったとします。
$a = $b = 1;
if (!($a < 0) || !($b < 0)) echo 'true';
else echo 'false';
結果は true、この条件式を ド・モルガンの法則 を用いて書き換えると下記のようになります。
$a = $b = 1;
if (!($a < 0 && $b < 0)) echo 'true';
else echo 'false';
少し読みやすくなったのではないかと思います。ここから、比較演算子 を反転させて 論理演算子 の !(否定)を消します。
$a = $b = 1;
if ($a > 0 || $b > 0) echo 'true';
else echo 'false';
かなり読みやすくなりました。このように、複雑な条件式を簡単にする際に役立ちます。
以上です。
おわりに
ド・モルガンの法則 って厨二病のセリフにありそうだなって感じるの私だけですかね。