今回の講義では、PHPのif文を学んでいきましょう
キャニット先生、if文ってなんですか?
if文は条件分岐とも呼ばれていて「◯◯だったら■■して、◯◯ではなかったら▲▲する」と処理をするプログラムです。
もしかして、英語の授業で習った「if」の意味と同じ?
そうですね。英語の授業でifを「もしも〜だったら〜」と習ったと思います。その考えで問題ないですよ
If文はPHPに限らず、最も使用するプログラム処理かもしれません。
PCPの学習:if文の書き方
では、さっそくif文の書き方を説明します
これがif文の書き方です。
なんかわかりにくいなぁ
if文は具体例を知れば、けっこうシンプルですよ。猫田さんにもわかりやすいように具体例を交えて解説しますね
if文の基本的なプログラミング方法
if文を成立させるためには、条件を決めなければなりません。そして、その条件に当てはまっているかどうか……それを判断します。
たとえば、下の条件のif文を作成するとしましょう。
- 「国語」、「数学」、「英語」の3科目の点数を入力
- 点数が80点以上の科目は「合格」と表記する
この場合の条件は、何になるかわかりますか?
あんまり自信ないけれど、『点数が80点以上』が条件……かなぁ
正解です! 牛山君はもっと自信を持っていいですよ
そうだよ。 もっと自信を持とう!
さて、この条件でプログラミングをしていくと下記の画像のようになります。
条件となるのが「各科目が80点以上」です。条件をクリアしたときは「合格」と表記するので、if文の条件式としてはこうなります。
「$変数名 >= 合格点数」
条件式の間にある「>=」は、比較演算子と呼ばれるものでif文を使用する際に多用されます。
こちらについては後述で詳しく紹介しますので、覚えておいてください。
今回の条件は「80点以上」となっていたので、数学と英語は条件を満たしているために文章が表示されましたが、国語は条件を満たしていないので表示されませんでした。
このようにif文では、「条件を満たした場合のみ」処理が実行される仕組みになっています。
「真」と「偽」の意味
PHPに限らず、プログラミングにおいては「真=True」、「偽=False」と使うことがよくあります。
「真」と「偽」とは、どのような意味ですか?
簡単に言えば「条件に一致しているか否か」です。条件に一致していれば「真」、条件と異なれば「偽」ですね
「偽」の場合にも処理を実行したい場合は?
真と偽の違いについて理解したところで、「偽の場合に処理を追加するとき」はどうするのか紹介していきましょう。
たとえば、上記の例に照らし合わせると「80点以上は合格」ですが、言い換えれば「80点未満は不合格」です。そのため、新たな条件として「不合格の場合は「不合格」と表示させる」というプログラミングをしましょう。
偽の場合の処理をする場合は「else」という命令を使用します。
この「else」が「条件が真では無かった場合」を意味しています
今回のケースでは、80点未満だった国語にelseの処理を実行します。
複数の条件で分岐させたいときの処理
続いて、「複数の条件で分岐させたいときの処理」を紹介します。
少し条件を変更します。 ここまででは「80点以上だと合格、以下だと不合格」でしたが、「70点以下だと不合格、90点以上だと合格、71点~89点は「もう少し頑張りましょう」と表記する」という処理に変更とします。
選択肢が2つから3つに変わったんですね
このように、If文で複数の条件分岐の処理をする際には「else if」を使用します。
このelse ifを使用することで複数の条件でIf文を使用することが出来ます。
ポイントは、「2つ目の条件でIf文を再定義する」というような考え方で問題ありません。
処理の流れは、始めのIf文で条件を満たさなかった場合に2つ目のelse ifで定められた条件での判定を行い、その条件に一致すればelse ifの中の処理を行います。
さらにelse ifの中の処理にも該当しなかった場合はelseの処理が実行されるという流れです。
if文を学ぶなら「比較演算子」を知ろう
さて、ここまでにも少しだけ触れましたが、if文を使用する場合は「比較演算子」を学ばなければなりません
比較演算子……なんか難しそうだなぁ
そんなことないですよ。名前こそ大袈裟ですが、「>」や「<=」のような記号のことです。よく使う比較演算子を簡単にまとめておきますね
- >(大なり(意味:◯◯よりも大きい))
- >=(大なりイコール(意味:◯◯以上))
- <(小なり(意味:◯◯未満))
- <=(小なりイコール(意味:◯◯以下))
- ==(等価(意味:◯◯と等しい))
- !=(等価の否定(意味:◯◯と等しくない))
- ===(厳密な等価(意味:型式も数値も◯◯と等しい))
この7パターンを使って左辺と右辺を比較するのがif文の基本です。
少し特殊なのが7番目の「===(厳密な等価)」です。
これは見たことないですね
これは、型式も数値も一致していないと「True(真)」とならない比較演算子です。
簡単な具体例を紹介しますね。数字の「7」と文字列の「7」は見た目が同じですが、プログラムでは厳密に言えば異なる値となります。 「===」を使用していると正確な判断が可能になり、実践の場でエラーを回避できるケースも少なくありません。
実際にif文を書いてみよう
では、ここまでの学習内容を踏まえた練習問題です
テストだ。テストだ
今回はif文なので、予めいくつかの条件を定めます。変数名や何をするための処理なのかとコメントアウトしたい方は好きにしてください。
テストプログラミング内容
条件については下記のとおりとします。
- 時速70キロメートルで走る自動車があります
- 時速60キロメートル以下の場合は「速度が遅いです」と表示させます
- 時速80キロメートル以上の場合は「速度が超過しています」と表示させます
- 速度が60キロメートルを超えて80キロメートル未満の場合は「適正速度です」と表示させます
こちらの条件でif文を作ってください。 正解は下記の画像となります。
がんばるぞー
テストの答え合わせ
はい。では、答え合わせです
このようなプログラムが書けていれば正解です。
今回は速度が70キロメートルなので「適正速度です」と表示されましたが、この最初に設定した速度を変えることによって表示される文章が切り替われば問題ありません。
PHPの学習:「if文」まとめ
というわけで、今回はPHPのプログラミングの中でも使用頻度の高い「if文」を学びました。二人ともどうでしたか?
条件分離処理とか、比較演算子とか、難しい言葉が出てきたときはどうしようかと思いました
実際は、そんなに難しくなかったと思いますよ
そうなのよ! わざと難しいぽい名前をつけるのは、よくないと思うなぁ
名前の件はさておき、条件分岐のプログラミングは、どのようなプログラミング言語でも使用頻度が高くなっています。しかし、正しく工程をイメージしないと間違った処理をしてしまうので、注意してください。 次回はif文と同じくらいに使用頻度の高い「for文」について紹介します。