if文とは?
また、if文には次のような使用例があります。
- 入力フォームで必要文字数に満たない場合にメッセージを表示させる
- エラーが起きた場合のみ特別なメッセージを表示させる
このように「if文」は、ある一定の条件を満たしたときに「別の処理」を行いたい場合に使用するとても重要な構文です。
この記事では
if文のelseを使った 単純分岐 や、elseifを使った 多岐分岐 などの基本的な使い方を、実際のコードやイラストを交えて優しく解説しています。
if文の単純分岐 else
if文は、与えられた条件式の結果が正しい 「true」または、違っている「false」 かによって処理を分岐させます。
elseを使用する場合
条件式の結果が「true」の場合は if()の直後のブロックの処理を実行し、「false」の場合は elseの直後のブロックの処理を実行します。
構文 - elseを使ったif文
if (条件式) {
//条件式がtrueである場合に実行する処理
} else {
//条件式がfalseである場合に実行する処理
}
そして、この条件式は「演算子」と組み合わて使用することが多いです。
では早速確認してみましょう。
今回は、例として「田中君はお酒が飲めるか?」を if文を使って年齢で判定させてみます。
例題
</>php <?php$age = 19; echo '田中君は、';
if ($age < 20) {
echo 'お酒は飲めません!';
} else {
echo 'お酒飲めます!';
} ?>
「田中君は、お酒は飲めません!」と怒られてしまいましたね。
これは、最初の「$age = 19;」で田中君の年齢を19歳に設定しているため、条件式( age < 20 )でtrueとなり、直後のブロック{} の中のプログラムが実行されているためです。
elseを使わない場合
実は「else」を使用せず、「if」のみを使用して条件分岐させることも可能です。
これは、ある条件に合致したときのみ処理を実行する書き方です。
それでは、前項で使用した式をelseを使わない式に書き換えてみましょう。
</>php<?php
$age = 19;
if ($age < 20) {
echo '田中君は、お酒は飲めません!';
} ?>
先ほどと同じ結果が表示されましたね。
もし最初の $age に「20」以上の数字を代入した場合は、プログラムがif文を抜けて、さらに下の処理から実行されます。
一行で記述するif文
前述したelseを使わないif文は、さらに { } (ブロック)省略して記述することができます。
では早速、elseを使わない式から {} を取り除いて記述してみましょう。
</>php<?php
$age = 19;
if ($age < 20) echo '田中君は、お酒は飲めません!'; ?>
if文の多岐分岐 elseif
前項では「if」と「else」を使って、処理をtrueの場合とfalseの場合の2つに分岐させましたが、
「elseif」を使うことで、さらに分岐の条件を指定して、多岐分岐させることができます。
「もし〜なら...を、それとも○○なら△△を、いずれでもなければ××を」という表現が可能になります。
なんだかしつこい奴みたいですね。
構文 - elseifを使ったif文
if (条件式1) {
//条件式1がtrueである場合に実行
} elseif(条件式2) {
//条件式2がtrueである場合に実行
...
} else {
//いずれもfalseである場合に実行
}
では、実際に確認してみましょう。
今度は、「田中君のテストの評価」をelseif文を使って点数で分岐させてみます。
例題
田中君の点数によって、
90点以上は「大変良くできました!!」
70点以上は「良くできました!!」
60点以上は「まぁまぁ良くできました!」
59点以下は「不合格です。」
と表示されるプログラムを用意し、テストの点数が「75点」だった場合の結果を出力してみましょう。
</>php<?php
$score = 75; echo '田中君は、';
if ($score >= 90) {
echo '大変良くできました!!';
} elseif($score >=70) {
echo '良くできました!'; //こちらが表示されます
} elseif($score >=60) {
echo 'まぁまぁ良くできました!';
} else {
echo '不合格です。';
} ?>
田中君の点数は75点なので、最初の条件式($score >= 90)はfalseとなりif直後のブロックはスルーされます。
次の条件式($score >=70)は、trueとなるのでelseif直後のブロックが実行され、「良くできました!」が表示されました。
ここで注意してもらいたいのが、
注意ポイント
それでは、今度は田中君が「100点」を取った場合の例で見てみましょう。
</>php<?php
$score = 100; echo '田中君は、';
if ($score >= 90) {
echo '大変良くできました!!';
} elseif($score >=70) {
echo '良くできました!';
} else {
echo '不合格です。';
} ?>
結果は、90点以上なので最初の条件式($score >= 90)でtrueとなり、「大変良くできました!!」が表示されました。
ですが、70点以上でもあるので、次の条件式($score >=70)もtrueで「良くできました!」「大変良くできました!!」と、さらに2回褒められても良さそうですが、反映はされません。
if文のネスト
if文は、if文の中にif文記述して「入れ子構造」にすることもできます。
この入れ子構造のことをネストと呼びます。
では、先ほどのif文をネスト構造に書き換えてみましょう。
前項で、田中君はせっかく100点を取ったので、100点を取った時だけ特別なメッセージが出るようにしてみます。
例題
先程のif文の内部に、100点を取った場合のみ「満点おめでとう!」というメッセージが出力されるif文を記述し、田中君が「100点」を取った場合の結果を出力してみましょう。
</>php<?php
$score = 100; echo '田中君は、';
if ($score >= 90) {
echo '大変良くできました!!';
if ($score === 100) {
echo '満点おめでとう!!';
}
} elseif($score >=70) {
echo '良くできました!';
} else {
echo '不合格です。';
} ?>
($score >= 90) がtrueなので「大変良くできました!!」が表示されるのはもちろん、
同じブロック内にある条件式($score === 100) もtrueとなり、追加で「満点おめでとう!!」というメッセージが表示されていますね。
条件演算子 を使った条件分岐
最後に、演算子の一種である「条件演算子」(三項演算子)を使った条件分岐を見てみましょう。
条件演算子は、条件式の後ろに「?」を記述し、「trueの場合に出力する式」と「falseの場合に出力する式」の間に「 : 」で区切って使用します。
例題
</>php<?php
$age = 27;
echo $age < 20 ? '田中君は、お酒は飲めません!' : '田中君、一緒に呑もう!' ; ?>
最後に
いかがでしたでしょうか、今回はphpの基本である制御構文の「if文」について解説しました。
もちろんこれ以外の制御構文についても解説していますので、興味のある方は是非こちらもチェックしてみて下さい。
php
PHP言語に関する基礎的な構文やデータ型や関数など、詳細な解説やコード例を提供しています。
続きを見る