こんにちは、大学院でIT系の研究を専攻している、ひらりんです。
PHPはサーバーサイドで動く言語で、世界中の多くのWebサイトがPHPによって記述されています。一括してコンパイルするのではなく、実行時に一行ずつコンパイルされることから、随時コードを確認できるのも、初心者が取り掛かりやすい理由のひとつです。
本記事では、PHPのif文におけるandの使い方や書き方、役割について説明します。プログラムの条件文では、複数の条件を用いたい際に論理演算子のandやorを使います。しかし、if文の書き方はプログラムによって違い、いざ書くとなると混乱しちゃいますよね。
PHPのif文のandについて、基本事項についてはもちろんのこと、実際にプログラムに組み込むことを想定した解説も行うので、PHPの学習を始めた方やプログラムを書く予定の人はぜひ読んでみてください!
目次
そもそも論理演算子とは?
論理演算子について振り返ってみましょう!プログラミングにおいて使用頻度が高い論理演算子は、次の4つになります。
論理積(AND) | && |
論理和(OR) | || |
どちらか一方のみ成立(xor) | xor |
否定(not) | !a |
条件文などに用いる論理演算子は、これらのようなものが挙げられます。AとBという条件があるとして、”論理積”は「AもBも成り立っているとき」、”論理和”は「AかBが成り立っているとき」という条件文になります。
“どちらか一方”は「Aが成り立っていてBが成り立っていないとき」か「Aが成り立っていなくてBが成り立っているとき」という条件文が成り立ち、否定は「Aが成り立たないとき」といった条件を作りたいときに用いられます。
if文は、書き方次第で「Aが成り立っているときに~な処理を実施する」という分岐文が作れますが、論理演算子を用いることで、プログラムが冗長してしまうのを防ぐことができ、複雑な条件式を作れます。
論理演算子のand
ここでは、本記事のテーマの論理演算子andについて解説します。
PHPで論理演算子のandについて書きたいときは、「&&」を用います。条件Aと条件Bがあったとして、この2つの条件を”&&”を用いて書くと、次のようになります。
1 |
(条件A && 条件B) |
小括弧()内に、条件AとBを書き、その間に“&&”を書きます。こうすることで、「条件Aと条件Bどちらも満たしているとき」という条件文を作成することができます。
ここで、簡単に「論理積」と言われる理由について考えてみましょう。論理演算子について考えるとき、条件が成り立つことを真(1)、成り立たないことを偽(0)としています。条件Aも条件Bも満たしているときのみ真になるように、1×1=1となる場合がこの条件を満たすので、論理積と呼ばれます。
また、条件Aと条件Bに対して “A && B” としたときの条件が成り立つ範囲を、分かりやすくベン図で説明すると、以下の色付きの範囲を表します。
条件Aにも条件Bにも属している範囲に色が塗られていますね。実際の例で考えると、条件Aが「変数xが5以上のとき」、条件Bが「変数xが8以下のとき」となる場合は、どちらの条件も満たす「変数xが5以上で8以下のとき」がこの範囲に該当します。
さらに、論理積の条件文において、3つ以上の条件を考慮したい場合も、同様の書き方で条件を増やせます。
では、論理演算子の”&&”を用いたプログラム例を、PHPのif構文を使って実際に見てみましょう。
PHPのif構文
論理演算子”&&”を用いた条件文に入る前に、簡単にif文について確認しておきましょう。
プログラムにおいて、変数や配列に格納されている値で処理内容を変えたい場面がありますよね。テストの点数の結果によって優秀かそうでないか判断したり、年齢によって処遇を変えたりしたいときは、ifを用いた条件文によってプログラムを書くことができます。
では、PHPにおけるif文の書き方を見てみましょう!
基本構文
1 2 3 |
if (条件) { // 条件を満たした場合に個々の処理が行われる } |
PHPのif文は、このように書きます。ifの直後の小括弧内()に、判断材料の条件文を書き、この条件が満たされた場合は、中括弧{}内の処理が実行されます。
条件文では、変数や配列の要素を定数で判別されることが多いです。「〇〇より大きいか」や「△△と同じか」などといった条件を用いて、プログラミングの分岐文は書かれます。では、よく使われる比較演算子についても簡単に確認しましょう。
使用頻度の高い比較演算子
ここでは、よく使われる比較演算子を6つ紹介します。
等しい | == |
等しくない | != |
より多い | > |
より少ない | < |
以上 | >= |
以下 | <= |
PHPで主に使用される比較演算子は、このようになっています。なお、プログラムの世界でイコールが1つ(=)の場合は「代入」を表すため、左辺と右辺の比較ではないので、注意してください。
論理演算子の”&&”を用いた実践プログラム例
それでは、今まで学習した比較演算子と論理演算子の”&&”を用いた条件分岐文を、実際のコードをもとに見てみましょう。
条件2つの分岐文例
1 2 3 4 5 6 7 |
// 変数$ageを定義 $age = 30; // 年齢を定義 // 条件が2つの分岐文 if ($age >= 20 && $age < 60) { echo '国民年金の被保険者です'; } |
1つの変数に対して2つの条件を用意し、論理演算子”&&”で比較した分岐文です。上から順に説明します。
2行目で、変数$ageを定義し年齢が格納されています。5~7行目でifを用いた条件文が記述されています。ifの直後の小括弧()内を見てみましょう。
論理演算子”&&”が用いられており、左側の条件「$age >= 20」と右側の条件「$age < 60」を論理積でつないでいます。つまり、「$ageが20以上かつ60より小さいとき」という条件を満たしている場合、そのあとの中括弧{}内の処理が実行されるようになっています。
今回は、$ageが30と定義されているため、論理演算子”&&”で作成された条件を満たしているため、if文の処理が実行されて、’国民年金の被保険者です’と表示されます。
ここでは、変数1つに対して複数条件を用いましたが、もちろん別々の変数について調査できます。次は、2つの変数に対して3つ以上の条件を適用した分岐文の例を示します。
3つ以上の条件の分岐文例
1 2 3 4 5 6 7 8 9 10 |
// 変数$lat、$lonを定義 $lat = 35; // 緯度を定義 $lon = 139; // 経度を定義 // 4つの条件を持つ分岐文をif~elseにて定義 if ($lat >= 30 && $lat <= 40 && $lon >= 120 && $lon <=130) { echo 'A地方です'; } else { echo 'B地方です'; } |
2つの変数に対して4つの条件を、論理演算子”&&”で比較した分岐文です。ここでは、if~else文を用いて、より複雑な条件分岐となっています。ifの直後に書かれた条件を満たしていない場合は、else内の処理が実行されます。
PHPのif文については、以下の記事で紹介されているので、理解が曖昧な人は参考にしてください。
参考 【PHP入門】PHPでif文を使う方法ウェブカツ ブログでは、プログラムを上から順に確認してみましょう。2,3行目で変数$latと$lonがそれぞれ定義されています。ここでは緯度と経度を表しています。
6行目からif文が始まり、条件分岐が行われています。条件は、「$latが30以上か」「$latが40以下か」「$lonが120以上か」「$lonが130以下か」という4つの条件を、論理演算子の”&&”を用いて作られています。
つまり、このif文は、「緯度が30°以上かつ40°以下であり、経度は120°以上かつ130°以下」という条件が成り立つときに、’A地方です’と表示されて、それ以外の範囲だった場合は’B地方です’と表示されるようになっています。
今回は、$latが35と定義されているため、左2つの$latについての条件は満たしていますが、$lonの値が139で、1番右の$lonが130以下という条件を満たしていません。論理演算子”&&”で条件が繋がれているため、1つでも条件を満たしていないとその条件文は偽となります。そのため、ここではelse以下の’B地方です’と表示されます。
論理演算子”&&”だけでなく、論理演算子”||”などを組み合わせることで、より複雑な条件分岐文も作ることができます!
まとめ
いかがでしたでしょうか?今回は、PHPのif文の論理演算子のandについて説明しました。
PHPのif文について、”&&”に限らず他の論理演算子について理解しておくと、プログラムが冗長化することを防くことができるため、プログラムには欠かせないメソッドです。ぜひ理解を深めて、Webサービス作成やシステム構築に活かしてください。