PHP PHP入門講座 プログラミング

【PHPプログラミング入門講座】条件分岐 (if文)

PHPプログラミングのキービジュアル

条件によって特定の処理を実行したくない場合

次のようなPHPプログラムを書いてみましょう。
(HTMLで書いています。なお、このサンプルプログラムは、HTMLの<body>タグよりも前と</body>タグよりも後ろを省略していますが、ブラウザで問題なく表示できます。)

<?php
  $num = 5;
  echo '2+3はいくつですか?<br>';
  echo $num . 'です。<br>';
  echo '正解です。';

これをブラウザで実行すると次のようになります。

2+3はいくつですか?
5です。
正解です。

では、このPHPプログラムの変数$numの値を5以外の値に変更してみましょう。
例えば6とか。

<?php
  $num = 6;
  echo '2+3はいくつですか?<br>';
  echo $num . 'です。<br>';
  echo '正解です。';

PHPプログラムの実行結果は次のようになります。
(以降はブラウザの写真ではなく、テキストで結果を掲載します。)

2+3はいくつですか?
6です。
正解です。

PHPプログラムの処理としてはブラウザで問題なく表示されているのでOKですが、表示されている文章の内容は間違っていますよね?

なので、答えが間違っていた場合は、「正解です。」のメッセージを表示しないようにしてみましょう。

ということですが、「答えが間違っていた場合」というPHPプログラムの書き方は初登場であり、まだ説明していません。
まずは、PHPプログラムの中に文章を書いて、どのような形になるかイメージしてみましょう。
次のようになると思います。

<?php
  $num = 6;
  echo '2+3はいくつですか?<br>';
  echo $num . 'です。<br>';
  もし、$numの値が5の場合は表示する。ここから。
    echo '正解です。';
  ここまで。

このように書いたら、わかりやすいですよね?

もし〜ならば

ところで、「もし〜ならば」の「もし」って、英語の授業でどのように書くと習いましたか?
「 If 〜 」です。
覚えていますか?

PHPプログラムでも、「もし〜の場合は(もし〜ならば)」というような処理を書きたい場合は、「 if 」を使います。
次のような形で書きます。

<構文>

  if(条件) {
    条件を満たした場合の処理
  }

この構文は、
もし、ifの後ろの( )内の条件を満たしている場合は、その後の { } の中の処理を実行します。(もし、条件を満たしていない場合は、その後ろの { } の中の処理を実行しません。)
という意味の記述です。

このようにプログラムで「 if 」を使った処理の記述を「 if文 」と呼びます。
また、このように条件により、処理を実行するかどうか場合分けすることを「条件分岐」と呼びます。

では早速、

  もし、$numの値が5の場合は表示する。ここから。
    echo '正解です。';
  ここまで。

の部分をPHPプログラムのif文に書き換えてみましょう。
次のようになります。

  if($num == 5) {
    echo '正解です。';
  }

ここで新しい記述が出てきました。
$num == 5」の部分です。

よ〜く見てください。
「=」が1つではなく、2つ書かれています。
だから、代入ではありません。

「$a == $b」は「$aと$bが等しいかどうか?」をチェックする処理です。
左辺と右辺を比較して、その内容が正しいか間違っているかをチェックする条件の記述方法です。

PHPプログラムでは、「=」は「代入」の意味で、「==」は「比較」の意味になります。
慣れないうちは間違えやすいので気をつけましょう。

なお、この「==」の記号のことを「比較演算子」と呼びます。

あと、PHPプログラムでは範囲を指定するために、{ }を使いますが、これを「ブロック」と呼びます。

インデント

ちょっと話がそれますが、「インデント(字下げ)」について説明しておきます。

  if($num == 5) {
    echo '正解です。';
  }

このPHPプログラムで、if文のブロック内の「echo '正解です。';」は、数も自分だけ右にずらして(字下げして)います。
字下げしてしなくてもPHPプログラムは問題なく実行できるのですが、人間が見たときに字下げしていなければ、ブロックに含まれている範囲が分かりづらくなります。
つまり、読みにくいプログラムになります。
そこで、ブロック内の処理は字下げを行います。
字下げのことをプログラミングでは「インデント」と呼びます。
自分が書いたプログラムをあとで読み直したり、また他の人が自分の書いたプログラムを読むことになった場合に、読みやすいようにプログラムソースにインデントをつける習慣をつけておきましょう。

if文の構文とプログラムを比較

if文の構文は次のとおりでした。

if(条件) {
  条件を満たした場合の処理
}

そして、 PHPプログラムのif文に書き換えると次のとおりでした。

if($num == 5) {
  echo '正解です。';
}

この2つを見比べて、PHPプログラムを読み解くと、
条件『$num == 5』を満たした場合は、直後のブロック内に書いている条件を満たした場合の処理『echo '正解です。';』を実行する。満たしていない場合は、直後のブロック内の処理は実行しない。
ということになります。

以上より、最初に出てきた全体的なプログラムは次のようになります。

<?php
  $num = 6;
  echo '2+3はいくつですか?<br>';
  echo $num . 'です。<br>';
  if($num == 5) {
    echo '正解です。';
  }

プログラムの2行目が「$num = 5;」の場合は、if文の条件を満たすため「正解です。」が表示されます。
プログラムの2行目が「$num = 6;」の場合は、if文の条件を満たさないため「正解です。」が表示されません。

もし〜ならばA、そうでなければB

先ほどは、正解の場合だけ「正解です。」のメッセージを表示しましたが、今度は、正解でなかった場合は「不正解です。」と表示も追加してみましょう。
シンプルに言い直すと「もし〜ならばA、そうでなければB」の「そうでなければB」の部分です。

どのようにするかと言うと、 「 if 」のブロックの後に「 else 」のブロックを追加します。
次のような形になります。

<構文>

if(条件) {
 条件を満たした場合の処理(A)
} else {
 条件を満たさなかった場合の処理(A)
}

この構文を、最初に出てきた全体的なPHPプログラムに当てはめると、次のようになります。

<?php
  $num = 6;
  echo '2+3はいくつですか?<br>';
  echo $num . 'です。<br>';
  if($num == 5) {
    echo '正解です。';
  } else {
    echo '不正解です。';
  }

ちなみに、このPHPプログラムを実行結果は、最初に変数$numに対して6を代入しており、if文の条件「$num == 5」を満たさないため、次のようになります。

2+3はいくつですか?
6です。
不正解です。

もし〜ならばA、そうではなくもし...ならばB、そうでなければC

「もし〜ならば」の条件を複数書きたい場合もあると思います。
例えば、「もし〜ならばA、そうではなく...ならばB、いずれにも当てはまらなければC」と言う形です。
この「そうではなく...ならば」の部分は、「 else if 」を使います。
次のような構文になります。

<構文>

if(条件1) {
  条件を満たした場合の処理(A)
} else if(条件2) {
  条件を満たした場合の処理(B)
} else {
  いずれの条件を満たさなかった場合の処理(C)
}

例えば、最初に出てきた全体的なPHPプログラムで、
変数$numの値が5の場合は「正解です。」と表示する。
そうでななく6の場合は「おしいです。」と表示する。
いずれにも当てはまらなければ「不正解です。」と表示する。
という処理をPHPプログラムで書く場合は次のようになります。

<?php
  $num = 6;
  echo '2+3はいくつですか?<br>';
  echo $num . 'です。<br>';
  if($num == 5) {
    echo '正解です。';
  } else if($num == 6) {
    echo 'おしいです。';
  } else {
    echo '不正解です。';
  }

if文の条件が複数ある場合は上から順番にチェックしていき、最初に条件を満たしたブロックの処理が行われます。
このPHPプログラムを実行すると、else ifの条件「$num == 6」を満たすので次のようになります。

2+3はいくつですか?
6です。
おしいです。

その他のバリエーション

「if」と「else」は1つしか記述することはできませんが、「else if」は次のようにいくらでも記述することができます。

if(条件) {
  条件を満たした場合の処理(A)
} else if(条件) {
  条件を満たした場合の処理(B)
} else if(条件) {
  条件を満たした場合の処理(C)
} else if(条件) {
  条件を満たした場合の処理(D)
} else {
  いずれの条件を満たさなかった場合の処理(E)
}

また「if」と「else if」を記述して、「else」が必要なければ記述しないこともできます。

if(条件) {
  条件を満たした場合の処理(A)
} else if(条件) {
  条件を満たした場合の処理(B)
}

変数が文字列の場合

PHPプログラムでは、変数の値が文字列の場合でも、if文の比較演算子は「==」を使います。
サンプルプログラムを掲載します。

<?php
  $alphabet = 'B';
  echo '2番目のアルファベットは何ですか?<br>';
  echo $alphabet . 'です。<br>';
  if($alphabet == 'B') {
    echo '正解です。';
  } else {
    echo '不正解です。';
  }

このPHPプログラムの実行結果は次のとおりです。

2番目のアルファベットは何ですか?
Bです。
正解です。

変数$alphabetの値は'B'であり、「$alphabet == 'B'」の条件を満たしますので、「正解です。」のメッセージが表示されます。

おわりに

if文を使った条件分岐の処理を使うと、条件に応じてプログラムの処理の切り替えをすることができるようになります。
if文はプログラムを書く時は、必ずと言っていいほど使用する構文ですので、マスターしておきましょう。

PHPプログラミング入門講座 〜 全記事一覧 〜

-PHP, PHP入門講座, プログラミング
-, , , ,

Copyright© ハッピー・プログラミング・ライフ , 2020 All Rights Reserved.