if構文と否定の演算子で複数要素を指定する際に気を付けること

投稿日:2022/06/19 最終更新日:2022/06/19

if構文と否定の演算子で複数要素を指定する際に気を付けること

PHPでif構文を使用して特定条件下では非表示にしたり色を変えたりとフロントエンドの現場ではよく使う構文ですよね。

その中でも「このページとこのページは他とは違うクラスをつけたいな・・」とか「非表示にさせたいな・・」ことはよくあると思います。

そんなときはタイトルの通りif構文と否定演算子の組み合わせはよく使われますが、気を付けないとエラーが発生しますので、注意したいところ。

今回はこの注意点を説明していきます。

if構文と否定の演算子とは?

if構文とは、ある条件下のときにtrueであればAをして、falseであればBをしてみたいな形で条件によって処理を分ける方法です。

簡単に言えば条件が「雨の日」であれば、true(=Yes)は「傘を持っていく」、false(=No)であれば「傘は持っていかない」という感じです。

if("特定の条件") {
 // true
 A
} else {
 // false
 B
}

否定の演算子とは「!(エクスクラメーションマーク)」といい、その名の通りこれ1つで否定をします。

つまり、「美味しい」に対して「!美味しい」=「美味しくない」のような感じです。

もっと実用的に言うと、このページ以外はこうしたいというときにelseでfalseの処理を書くことなくtrue部分だけ明記して指定をする時があります。

if(!A) {
 // Aでないときの処理
}

このような組み合わせで「もし~でないなら」の条件式を書きます。

どんなエラーが起こりやすいのか?

否定の演算子の書き方でエラーが起こりやすいです。

例えば、AとBのどちらかが条件に合った場合に、

// エラーが起こる
if(!A || !B) {
 // AとB以外での処理
}

と書くとエラーが表示されるもしくは正しく結果を返してくれません。

解決法

では、どうするかというと、、、

// OK
if(!(A || B)) {
 // AとB以外での処理
}

と書きます。

つまりは複数条件としての「||」と否定の演算子の「!」を組み合わせて使用する場合は、「!(A||B)」の形にしないといけません。

覚えたての頃にしがちなミスとして「!A || !B」と書くと、正しく表示されませんしエラー表示がしっかり出ないこともあるので注意が必要です。