PHP でド・モルガンの法則をわかりやすく説明してみる

はじめに

実務にて、ド・モルガンの法則って何ですかと聞き返されることがあります。中学数学の集合と論理で学習しているはずですが、大人になると忘れちゃいますよね。そこで、何度も説明するのがめんどくさいので、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';

かなり読みやすくなりました。このように、複雑な条件式を簡単にする際に役立ちます。

以上です。

おわりに

ド・モルガンの法則 って厨二病のセリフにありそうだなって感じるの私だけですかね。