PHP if文(条件分岐)の使い方

if文(条件分岐)は、色々な場面で使用するので初めての方は、どうしても分かりにくいと思います、慣れてくると何となく意味合いが腹に落ちると思います、それでは学習していきましょう。

このブログで分かること

・if文(条件分岐)の使い方を知りたい方。

・何となく分かるが、すぐに使い方を忘れる方。

・PHPの勉強を始めたい方。

「if文」と「比較演算子」の使い方

if-else文

true(真):条件が一致していること。

false(偽):条件が一致していないこと。

<?php
   if(条件式 A) {
      処理①:条件式 A が「true」であれば、このブロックが実行される。
   }
   else {
      処理②:条件式 A が「false」であれば、このブロックが実行される。
   }
?>
解説

条件式 Aの場所に条件式を記述します、処理①に「true」用の処理を記述し、条件が「true」の場合、①のブロックが実行される。

次に、「false」用の処理を処理②を記述し、条件が「false」の場合、②のブロックが実行される。

if-else文のフローチャート図

上記の処理をフローチャート図で示すとこの様になります。

if-elseif-else文

<?php
   if(条件式 A) {
      処理①:条件式 A が「true」であれば、このブロックが実行される。
   }
   elseif(条件式 B) {
      処理②:条件式 A が「false」で、条件式 B が「true」であれば、このブロックが実行される。
   else {
      処理③:条件式 B でも「false」であれば、このブロックが実行される。
   }
?>
豆知識

上記は選択肢を三つにしたい時、「elseif」を使用する、ちなみに「else if」とスペースを入れても入れなくてもphpは動作します。

if-elseif-elseのフローチャート図

上記の処理をフローチャート図で示すとこの様になります。

if-elseif-else文の使用例

条件1:テスト点数
60点未満:不合格
60点以上 80点未満:合格
80点以上:優秀

条件2:遅刻回数
6回以上:不合格

<?php
   //仮のテスト点数を定義しなくては始まらない。
   $score = 50;
   if($score < 60) {
      echo '不合格';
   } else if($score >= 60 && $score < 80) {
      echo '合格';
   } else {
      echo '優秀';
   }
?>
画面上では、

不合格」と表示される。

画面上で確認するには、サーバーを借りるか、MAMP(マンプ)等を自分のパソコン内にインストールして確認します、まだインストールしていない方は下の記事を活用してください。

条件式 A の解説

1, $score < 60は、テストの点数が60点未満を表している。

2, 「<」:未満を不等号で表しています。「しょうなり」と読みます。

3, 「echo」:画面に表示するの意味合い。

条件式 B の解説

1, $score >= 60 && $score < 80は、テストの点数が60点以上 80点未満を表している。

2, 「>=」:以上を不等号で表しています。

3, &&(アンパサンド):「AND条件」や「かつ」と同じで、二つのどちらの条件も満たすもの。

4, ||:「OR条件」や「どちらか」と同じで、二つのどちらかの条件を満たすもの。

5, 「else if文」に来る時点で、60点以上は確定しているので、「$score < 80」だけでよい。

else文

1, 「条件式 A」 も 「条件式 B」も「false」の場合は、このブロックが実行される。

以上が条件分岐の基本的な書き方になります。

比較演算子、==と===の違い

==の時と、===の時は、使い方が違います、それでは学習していきましょう。

どちらも値を比較する時に使う演算子になりますが、使い方を間違えると自分で思った動きとは違う挙動になりますので注意しましょう。

==の意味合い

<?php ?>は省略しています。

if(1 == '1') {
   //数字の1と文字の'1'が等価かどうか確認します。
   echo 'true';
}
画面上では、

左辺と右辺の(1 == ‘1’)の「値」が等価であるかどうかを判定する。

true」 と表示される。

解説

左辺の「1」と右辺の「’1’」は、両方とも値的には1であるので「true」等価である。

===の意味合い

if(1 === '1') {
   echo 'true';
} else {
   echo 'false'
}
画面上では、

左辺と右辺(1 === ‘1’)の「値」と「型」が等価であるかどうかを判定する。

false」と表示される。

解説

左辺の1は整数値、右辺の’1’は文字列になりますので、データの型が異なり「false」、このように挙動に差が出てきます。

プログラミング時はどちらを使えばいいのか疑問が出てきますが、二つのイコールを使った場合、型の比較を行わないので、意図しない時に「true」となる可能性があるので、バグを生み出さないためにもなるべく三つのイコールを使うことを推奨します。

意図しない挙動の例

(0 == false) :画面では、ゼロとfalseの比較は「true」となります。

(0 ===false) :画面では、ゼロとfalseの比較は「false」となります。

解説

比較演算子は事前に型の変換を行うので、falseは「0(ゼロ)」とします。
0==false → 0==0と型の変換がされるので、「true」となります。

ちなみに、型の変換でtrueは「1(いち)」となります。

0===false:0はint型(整数型)、falseはbool(ブール)型となり、型違いで「false」となります。

まとめ

if文(条件分岐)は色々な場面で使用されます、日常生活でもそうですよね、朝起きた時点から条件分岐がありトイレに行くのか、顔を洗うのか、色々な選択肢に迫られます、しかし、人間の脳は瞬時にプログラムを作成し判断します、本当に人間の脳は素晴らしい、パソコンで作成するプログラムも人に役立つものを作成すれば、きっと世の中はもっと便利になると思います、頑張っていきましょう。