こんにちは、大学院でIT系の研究を専攻している、ひらりんです。
PHPはサーバーサイドで動く言語で、世界中の多くのWebサイトがPHPによって記述されています。一括してコンパイルするのではなく、実行時に一行ずつコンパイルされることから、随時コードを確認できるのも、初心者が取り掛かりやすい理由のひとつです。
本記事では、PHPのif~elseについて説明します。プログラムのif文で、条件分岐をさせたい文が複数ある場合がありますよね。しかし、条件分岐の正しい書き方や概念を理解していないと、エラーや誤りが生じてしまうこともあります。
PHPのif~elseについての書き方を説明し、1行で書く方法の解説なども行うので、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のif~else文
if文について、今回の主題であるif~elseについて説明します。
「ある1つの条件を満たしたら、〇〇な処理を実行する」という場合は、if文のみで書けます。しかし、「条件を満たしていたら〇〇な処理をして、満たしていなかったら△△な処理を実行する」と、処理内容を変えたい場面がありますよね。そこで登場するのがif~elseです。
基本構文
if~else文の書き方は次のようになります。
1 2 3 4 5 |
if (条件) { // 条件を満たしていたら、ここの処理が実行される } else { // 条件を満たしていなかったら、ここの処理が実行される } |
1つの条件に対しての評価を行い、処理内容を変えたい場合はこのように記述します。if直後の小括弧()内の条件に対して変数や配列の評価を行い、条件を満たしていたら直後の中括弧{}内の処理が実行されます。条件を満たしていなかったら、else以下の中括弧{}内の処理が行われるようになります。
では、2つ以上の条件を評価したい場合は、どのように書くのでしょうか。
2つ以上の条件を評価するときに使うのが、elseif構文です。どのように書くのか見てみましょう。
1 2 3 4 5 6 7 |
if (条件1) { // 条件1を満たしていたら、ここの処理を実行 } elseif (条件2) { // 条件1を満たしていなくて、条件2を満たしていたら、ここの処理を実行 } else { // 条件1,2を満たしていなかったら、ここの処理を実行 } |
elseifはこのように使います。上から評価を行うため、ここでは条件1から調査されます。条件1を満たしていなかったら、3行目の処理に移り条件2の評価を行います。条件2も満たしていなかったら、5行目のelse以下の文に移るようになっています。
なお、elseifは複数個挿入することができ、2つ以上の条件分岐の作成を実現させます。しかし、処理は上から順に行われるため、elseifの順番には気を付けましょう!
それでは、実際のプログラムコード例について見てみましょう。
実践プログラム例
1つの条件分岐を用いた場合
1 2 3 4 5 6 7 8 9 |
// 変数$ageを定義 $age = 15; // 年齢を定義 // 条件が1つのif文 if ($age >= 18) { echo '選挙権があります'; // 「$age>=18」を満たしていたら実行 } else { echo '選挙権がありません'; // 「$age>=18」を満たしていなかったら実行 } |
年齢によって表示内容が変わるプログラムです。上から順に確認してみましょう。
2行目で変数$ageを定義しています。5行目からif文が始まり、「$age >= 18」という条件によって処理内容が変わります。今回は、$ageには15が格納されているので、条件は満たしませんね。そのため、else以下の処理に移り、’選挙権がありません’と表示されます。
2つ以上の条件分岐を用いた場合
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のif文の省略形
ここまで、if文とif~else文などについて、基本的な書き方とプログラム例を説明してきました。しかし、PHPにはif文をもっと簡単に書く方法があります。最後に簡単に見てみましょう。
if文
基本構文
1 |
if (条件) 処理内容; |
先ほどは、中括弧{}内に処理内容を書いていましたが、処理が1つしかない場合はこのように書けます。こうすることで、条件を満たしていたら実行するというif文を1行で書けます。簡単にコード例を見てみましょう。
実践プログラム例
1 2 3 4 5 |
// 変数$scoreを定義 $score = 70; // if文の省略形 if ($score > 60) echo '合格'; |
変数$scoreを評価するプログラムです。5行目のように、1行でif文を記述することができます。ここでは、「$score>60」という条件を満たしているので、’合格’と表示されます。
if~else文
基本構文
続いて、if~else文の省略形は次のようになります。
1 |
結果を格納する変数 = (条件) ? 真の場合 : 偽の場合; |
if~else文のように、条件を満たすかどうかで処理内容が変わり、その結果を別の変数に格納することができます。実際のコード例を見てみましょう。
実践プログラム例
1 2 3 4 5 6 7 |
// 変数$scoreを定義 $score = 90; // if~else文の結果を変数$resultに格納 $result = ($score>80) ? 'A' : 'B'; echo '評価は' . $result . 'です'; // ここでは'評価はAです'と表示 |
変数$scoreによって、表示内容が変わるプログラムです。5行目で、$scoreを評価しています。今回は、条件を満たすため、$resultには’A’が格納されて、7行目では’評価はAです’と表示されます。
まとめ
いかがでしたでしょうか?今回は、PHPのif~elseについて説明しました。
PHPのif文について、elseやelseifの理解だけでなく、1行で条件文が書けるようになると、プログラムが冗長化することを防くことができます。ぜひ理解を深めて、Webサービス作成やシステム構築に活かしてください。