こんにちは、大学院でIT系の研究を専攻している、ひらりんです。
PHPはサーバーサイドで動く言語で、世界中の多くのWebサイトがPHPによって記述されています。一括してコンパイルするのではなく、実行時に一行ずつコンパイルされることから、随時コードを確認できるのも、初心者が取り掛かりやすい理由のひとつです。
本記事では、PHPのelseifについて説明します。プログラムのif文で、複数の条件を設けたうえで分岐をさせたい場合がありますよね。例えば、テストの点数が80点以上のグループと60点以上、40点以上、それ以外のグループに分けたいときなどに、PHPのif文でelseifが使えるととても便利です。
PHPのelseifについての書き方を説明し、実際のプログラムでの使用例などについても解説するので、PHPの学習を始めた方やプログラムを書く予定の人はぜひ読んでみてください!
目次
PHPのif構文
まず始めに、簡単にif文について確認しましょう。
プログラムにおいて、変数や配列に格納されている値で処理内容を変えたい場面がありますよね。テストの点数の結果によって優秀かそうでないか判断したり、年齢によって処遇を変えたりしたいときは、ifを用いた条件文によってプログラムを書くことができます。
基本構文
1 2 3 |
if (条件) { // 条件を満たした場合に個々の処理が行われる } |
PHPのif文は、このように書きます。ifの直後の小括弧内()に、判断材料の条件文を書き、この条件が満たされた場合は、中括弧{}内の処理が実行されます。
条件文では、変数や配列の要素を定数で判別されることが多いです。「〇〇より大きいか」や「△△と同じか」などといった条件を用いて、プログラミングの分岐文は書かれます。では、よく使われる比較演算子や論理演算子についても簡単に確認しましょう。
比較演算子
ここでは、よく使われる比較演算子を6つ紹介します。
等しい | == |
等しくない | != |
より多い | > |
より少ない | < |
以上 | >= |
以下 | <= |
PHPで主に使用される比較演算子は、このようになっています。なお、プログラムの世界でイコールが1つ(=)の場合は「代入」を表すため、左辺と右辺の比較ではないので、注意してください。
論理演算子
論理演算子について振り返ってみましょう!プログラミングにおいて使用頻度が高い論理演算子は、次の4つになります。
論理積(AND) | && |
論理和(OR) | || |
どちらか一方のみ成立(xor) | xor |
否定(not) | !a |
条件文などに用いる論理演算子は、これらのようなものが挙げられます。AとBという条件があるとして、”論理積”は「AもBも成り立っているとき」、”論理和”は「AかBが成り立っているとき」という条件文になります。
“どちらか一方”は「Aが成り立っていてBが成り立っていないとき」か「Aが成り立っていなくてBが成り立っているとき」という条件文が成り立ち、否定は「Aが成り立たないとき」といった条件を作りたいときに用いられます。
if文は、書き方次第で「Aが成り立っているときに~な処理を実施する」という分岐文が作れますが、論理演算子を用いることで、プログラムが冗長してしまうのを防ぐことができ、複雑な条件式を作れます。
PHPのelseif
if文について、今回の主題であるelseifについて説明します。
「ある1つの条件を満たしたら、〇〇な処理を実行する」という場合は、if文のみで書けます。しかし、「〇〇条件は満たしていないけど、△△条件を満たしていたら、◇◇な処理を実行する」と、複数の処理を設けたい場面がありますよね。そこで登場するのがelseifです。
基本構文
1 2 3 4 5 6 7 |
if (条件1) { // 条件1を満たしていたら、ここの処理を実行 } elseif (条件2) { // 条件1を満たしていなくて、条件2を満たしていたら、ここの処理を実行 } else { // 条件1,2を満たしていなかったら、ここの処理を実行 } |
elseifはこのように使います。順に見ていきましょう。
上から評価を行うため、ここでは条件1から調査されます。条件1を満たしていなかったら、3行目の処理に移り条件2の評価を行います。条件1を満たしておらず、条件2だけを満たしてたら、3~4行目に書かれた処理内容が実行されるようになっています。また、条件1も条件2も満たしていなかった場合は、5行目のelse以下の文に移るようになっています。
なお、elseifは複数個挿入することができ、2つ以上の条件分岐の作成を実現させます。しかし、処理は上から順に行われるため、elseifの順番には気を付けましょう!
また、条件を満たしていないときに何も処理しない場合は、else文を書く必要はありません。
それでは、実際のプログラムコード例について見てみましょう。
実践プログラム例
ここでは、変数1つに対して、elseifを用いて複数の条件を調査する例と、変数2つのときの同様な調査を実施するプログラム例を解説します。
変数1つを調査
まずは、変数$scoreについて評価を行っているプログラムを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 |
// 変数$scoreを定義 $score = 75; // 点数を定義 // elseifを用いた条件文 if ($score >= 80) { echo '上位層です'; } elseif ($score >= 60) { echo '中位層です'; } else { echo '下位層です'; } |
点数の結果を表す$scoreによって、表示内容が変わるプログラムを記述しました。上から順にチェックしてみましょう。
まず、2行目で$scoreが定義されています。ここでは、$scoreに75が代入されていますね。
5行目以降から、if文が始まっています。まず、5行目では、「$scoreが80以上」という最初の条件が書かれています。今回はこの条件は満たさないため、7行目に移ります。
続いて、「$scoreが60以上」という条件が提示されていますね。この条件は満たすため、elseif文の中括弧内の処理が実行されて、「中位層です」と表示されます。
なお、$scoreが90だとしたら、「$score >= 60」という条件はもちろん満たしますが、その前の条件の「$score >= 80」を満たしているため、「上位層です」と表示されてif構文から抜け出します。
変数2つを調査
続いて、2つの変数$genderと$heightについて評価するプログラムを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
// 変数$gender,$heightを定義 $gender = 'woman'; // 性別を定義 $height = 160; // 身長を定義 // elseifを用いた条件文 if ($gender=='man' && $height>=168) { echo '男性で平均身長以上あります'; } elseif ($gender=='woman' && $height>=154.5) { echo '女性で平均身長以上あります'; } else { echo '平均身長より低いです'; } |
性別と身長を評価し、表示内容が変わるプログラムを書きました。上から順に見ていきましょう。
2,3行目で、変数$genderと$heightを定義しています。6行目からif文が始まります。if文の直後に、「$gender==’man’」と「$height>=168」の2つの条件を論理演算子&&で繋いだ条件があります。これにより、「性別が男で、かつ身長が168以上あったら」という条件になります。今回は、どちらの条件も満たしていないので、次に移ります。
8行目には、2つ目の条件文があります。こちらも同様で、「性別が女で、かつ身長が154.5以上あったら」という条件になります。今回は、$genderが’woman’で、$heightが160と定義されていたため、この条件は満たします。そのため、今回のプログラムでは、「女性で平均身長以上あります」と表示されます。
まとめ
いかがでしたでしょうか?今回は、PHPのelseifについて説明しました。
PHPのif文について、elseifの理解だけでなく、省略形の書き方やアルゴリズムについての理解を深めると、より高品質なサービスを作成できます。ぜひ理解を深めて、Webサービス作成やシステム構築に活かしてください。