こんにちは、大学院でIT系の研究を専攻している、ひらりんです。
PHPはサーバーサイドで動く言語で、世界中の多くのWebサイトがPHPによって記述されています。一括してコンパイルするのではなく、実行時に一行ずつコンパイルされることから、随時コードを確認できるのも、初心者が取り掛かりやすい理由のひとつです。
本記事では、PHPのif文でのorの使い方について説明します。プログラムでif文を書く際に、複数個の条件を一気に調査したい場面がありますよね。しかし、論理演算子を含めたif文は言語によって記述法が異なったり、理解があやふやだと、間違った処理へと繋がり結果の信憑性に欠けてしまいます。
PHPのif~orについて、基本構文だけでなく実際のコードを用いた解説もするので、PHPの学習を始めた方やプログラムを書く予定の人はぜひ読んでみてください!
目次
そもそも論理演算子とは?
論理演算子は、複数の条件式を組み合わせた複雑な条件を作成する際に使われます。では、論理演算子にはどのようなものがあるのでしょうか?プログラミングにおいて、使用頻度が高い論理演算子には次の4つのようなものがあります。
論理積(AND) | && |
論理和(OR) | || |
どちらか一方のみ成立(xor) | xor |
否定(not) | !a |
条件文などに用いる論理演算子は、これらのようなものが挙げられます。AとBという条件があるとして、”論理積”は「AもBも成り立っているとき」、”論理和”は「AかBが成り立っているとき」という条件文になります。
“どちらか一方”は「Aが成り立っていてBが成り立っていないとき」か「Aが成り立っていなくてBが成り立っているとき」という条件文が成り立ち、否定は「Aが成り立たないとき」といった条件を作りたいときに用いられます。
if文は、書き方次第で「Aが成り立っているときに~な処理を実施する」という分岐文が作れますが、論理演算子を用いることで、プログラムが冗長してしまうのを防ぎ、より複雑な条件を作ることができます。
論理演算子のor
ここでは、本記事のテーマの論理演算子orについて解説します。
PHPで論理演算子のorについて書きたいときは、「||」を用います。条件Aと条件Bがあったとして、この2つの条件を”||”を用いて書くと、次のようになります。
1 |
(条件A || 条件B) |
小括弧()内に、条件AとBを書き、その間に“||”を書きます。こうすることで、「条件Aか条件Bのどちらかを満たしているとき」という条件文を作成することができます。
ここで、簡単に論理演算子orが「論理和」と言われる理由について考えてみましょう。論理演算子について考えるとき、条件が成り立つことを真(1)、成り立たないことを偽(0)としています。条件Aか条件B、またはそのどちらも満たしているときに真になるように、1+1=1や1+0=1となる場合がこの条件を満たすので、論理和と呼ばれます。
また、条件Aと条件Bに対して “A || B” としたときの条件が成り立つ範囲を、分かりやすくベン図で説明すると、以下の色付きの範囲を表します。
条件Aか条件B、またはどちらにも属している範囲に色が塗られていますね。
他の論理演算子などと合わせた例についても考えてみましょう。例えば、否定を表す論理演算子”!”を用いて、“!A || B”という条件は、以下のようなベン図の色付き範囲が、条件を満たす対象となります。
条件Aに否定を表す論理演算子の”!”があるので、Aの範囲には色が塗られていませんが、AにもBにも属している範囲は、右側のBの条件は満たしているため色が塗られています。このように、論理演算子については、書き方だけでなく条件範囲などを含めた理解が必要です。
PHPのif構文
まずは、簡単にif文について説明します。
プログラムにおいて、変数や配列に格納されている値で処理内容を変えたい場面がありますよね。テストの点数の結果によって優秀かそうでないか判断したり、年齢によって処遇を変えたりしたいときは、ifを用いた条件文によってプログラムを書くことができます。
では、PHPにおけるif文の書き方を見てみましょう!
基本構文
1 2 3 |
if (条件) { // 条件を満たした場合に個々の処理が行われる } |
PHPのif文は、このように書きます。ifの直後の小括弧内()に、判断材料の条件文を書き、この条件が満たされた場合は、中括弧{}内の処理が実行されます。
条件文では、変数や配列の要素を定数で判別されることが多いです。「〇〇より大きいか」や「△△と同じか」などといった条件を用いて、プログラミングの分岐文は書かれます。では、よく使われる比較演算子についても簡単に確認しましょう。
使用頻度の高い比較演算子
ここでは、よく使われる比較演算子を6つ紹介します。
等しい | == |
等しくない | != |
より多い | > |
より少ない | < |
以上 | >= |
以下 | <= |
PHPで主に使用される比較演算子は、このようになっています。なお、プログラムの世界でイコールが1つ(=)の場合は「代入」を表すため、左辺と右辺の比較ではないので、注意してください。
なお、PHPのif文について詳しく知りたい人は、以下の記事を参考にしてください。
参考 【PHP入門】PHPでif文を使う方法ウェブカツ ブログそれでは、これらの比較演算子と、orを表す論理演算子の”||”を用いた条件分岐文を、実際のコードをもとに見てみましょう。
if文のorを用いた実践プログラム例
それでは、PHPのif文で、論理演算子orの”||”を用いた条件分岐文を見てみましょう。
条件2つの分岐文例
1 2 3 4 5 6 7 8 |
// 変数$age、$heightを定義 $age = 5; $height = 124; // 2つの条件を、論理演算子"||"で作成 if ($age>=6 || $height >= 120) { echo '入場料がかかります'; } |
2つの条件を、論理演算子orを用いて評価したプログラムです。上から順に確認しましょう。
2,3行目で、変数$ageと$heightを定義しています。この2つの変数に対して、6行目で評価を行うif文が書かれています。if文の条件を詳しく見てみましょう。
“$age>=6″は「$ageが6以上かどうか」という条件で、”$height>=120″は「$heightが120以上かどうか」という条件を表しています。これらの条件を、論理演算子orで繋いでいるので、if文は「$ageが6以上か、または$heightが120以上であるならば」という条件になります。
今回は、$ageの条件は満たしていませんが、$heightが124なので条件を満たしているため、if文の中括弧内{}の処理が実行されて、’入場料がかかります’と表示されます。
条件3つ以上の分岐文例
1 2 3 4 5 6 7 8 9 |
// 変数$city、$age、$numを定義 $city = 'Yokohama'; $age = 30; $num = 5; // 条件3つの分岐文 if ((!($city=='Osaka')) || ($age <= 20) || ($num >= 10)) { echo 'Aグループです'; } |
変数3つに対して、条件3つを論理演算子orで評価したプログラムです。
2~3行目で、変数を定義しています。7~9行目でif文が記述されています。if文の条件をそれぞれ見てみると、”!($city==’Osaka’)”は否定を表す論理演算子”!”があるので、「$cityが’Osaka’でなかったら」という条件です。”$age<=20″は「$ageが20以下かどうか」、”$num>=10″は「$numが10以上かどうか」という意味になります。
今回は、$ageと$numについての条件は満たしていないものの、$cityが’Osaka’でないため、最初の条件は満たしています。論理演算子orで繋がれた条件文は、1つでも条件を満たしていれば、その条件は真(1)となるので、if文内の処理が実行されて、’Aグループです’と表示されます。
if文のorを用いた分岐文の省略形
ここまで、if文で論理演算子orを用いた条件文について説明してきました。しかし、PHPのif文のorについて、もっと簡単に書く方法があります。基本から簡単に解説します。
基本構文
1 |
if (条件A || 条件B) 処理内容; |
先ほどは、中括弧{}内に処理内容を書いていましたが、処理が1つしかない場合はこのように書けます。こうすることで、条件Aと条件Bのどちらかを満たしていたら、処理を実行するというif文を1行で書けます。簡単にコード例を見てみましょう。
実践プログラム例
1 2 3 4 5 6 |
// 変数$height、$weightを定義 $height = 170; $weight = 80; // if~orを一行で if ($height > 160 || $weight < 60) echo 'Bグループです; |
このように、if文を一行で書けます。ここでは、$heightと$weightの条件をそれぞれ比較し、どちらか一方でも満たしていたら、小括弧()直後の処理が実行されます。ここでは、$heightが条件を満たしているので、’Bグループです’と表示されますね!
まとめ
いかがでしたでしょうか?今回は、PHPのif文のorについて説明しました。
PHPのif文について、orを始めとした論理演算子について理解するだけでなく、一行で書く方法などを知っておくと、プログラムが冗長化することを防くことができます。ぜひ理解を深めて、Webサービス作成やシステム構築に活かしてください。