プログラミング言語

【PHP入門④】条件分岐 ~初心者でも安心!基礎から学べるプログラミング講座~

プログラミング言語

※前回の講座がまだの人はこちら
【PHP入門③】演算子 ~初心者でも安心!基礎から学べるプログラミング講座~

条件分岐とは?

条件分岐とは、場合によって動作を変えたい時に使用します。
みなさんも日常生活で自然とやってるはずです。
例えば、おつかいを考えてみて下さい。

リンゴを買ってきて下さい。
もし、リンゴが100円以下であれば3個買って下さい。
そうでなければ、2個買って下さい。

この様に依頼された場合、「もし〜」という言葉で、リンゴを買う個数が変化します。
「100円以下」「そうでなければ」という言葉がリンゴの数を決める条件と言えます。
そして、条件により買ってくる数が「3個」と「2個」の2パターンに分岐しています。
これを条件分岐と言います。

条件分岐

条件分岐の書き方は複数存在します。
今回は、if文とswitch文を紹介します。

if文

if文は、条件によって処理分岐したい場合に使います。
上の例をプログラミング的に考えると
「リンゴが100円以下」という条件に対して、「はい」の場合「3個買う」
「いいえ」の場合「2個買う」と言い換えることが出来ます。


if文を使うと、以下の様に書きます。

if(リンゴが100円以下) {
  //はい
  3個買います
} else {
  //いいえ
  2個買います
}

分岐は2パターンとは限りません。
リンゴが200円以上の場合は1個だけ買いたいとします。

分岐のパターンが3つ以上の場合は、elseifを使います。

if(リンゴが100円以下) {
  //はい
  3個買います
} elseif(リンゴが200円以上) {
  //はい
  1個買います
} else {
  //いいえ
  2個買います
}

「リンゴが200円以上」という条件に対して、「はい」の場合「1個買う」
というパターンが追加されました。

if文は上から順番に処理を行います。
条件を見て、その条件を満たせば、if文の中の処理を行い、if文の中から抜けます。
条件を満たさなかった場合、次の条件を見に行きます。(elseifが存在する場合)
if文の全ての条件を満たさなかった場合、elseの中の処理を行います。

if(条件1) {
  処理1;
} elseif(条件2) {
  処理2;
} else {
  処理3;
}

条件

先程から言っている、条件の書き方を説明します。
条件には、主に比較演算子を使います。
左辺と右辺の大小や同等性を比較出来ます。

比較演算子 機能
$a == $b $aと$bが等しい
$a === $b $aと$bが等しい
$a != $b $aと$bが等しくない
$a !== $b $aと$bが等しくない
$a < $b $aが$bより小さい
$a <= $b $aが$b以下
$a > $b $aが$bより大きい
$a >= $b $aが$b以上

また、複数の条件を一度に確認したい場合は論理演算子を使います。

論理演算子 機能
条件A && 条件B 条件Aかつ条件B(条件Aと条件Bを共に満たす)
条件A || 条件B 条件Aまたは条件B(条件Aか条件Bどちらか片方、もしくは両方満たす)

「リンゴが100円以下」をプログラミングで書きたい場合

リンゴの値段 <= 100円

この様なイメージになると思います。
リンゴの値段を何かしらの変数へ入れる事でプログラムを書くことが可能です。
(今回は、$appleという変数にリンゴの値段が入っているとします。)

if($apple <= 100) {
  echo "3個買います";
} else {
  echo "2個買います";
}

リンゴの値段が100以下の場合は、「3個買います」という文字列が
100以下でない場合は、「2個買います」という文字列が表示されます。

リンゴの値段が100円より大きく、200円以下の場合に2個買いたいとします。

if(100 < $apple <= 200) {
  echo "2個買います";
}

算数の様に書きたい気持ちは分かります。
しかし、プログラミングでこの書き方は出来ません。
比較演算子は、左辺と右辺の二つの値しか比較できません。

OK:$a < $b
NG:$a < $b < $c

三つの値を比較したい場合は、先程触れた、論理演算子を合わせて使います。

「リンゴの値段が100円より大きく、200円以下」は
「リンゴの値段が100円より大きい」と「リンゴの値段が200円以下」の二つに分けることができます。
この二つの条件を共に満たす、つまり「リンゴの値段が100円より大きいかつ、200円以下」にしたいので

if(100 < $apple && $apple <= 200) {
  echo "2個買います";
}

「&&」を使えば、条件を作ることが出来ます。

switch文

switch文もif文と同様に分岐処理を行えます。
switch文は式の結果が、3パターン以上の値を得る場合に適しています。
リンゴを買ってきた個数に応じて、処理を分岐させたい時を考えてみます。

$appleに買ってきたリンゴの個数が入ってるとして、if文で書いてみます。

if($apple == 2) {
  echo "人にあげる";
} elseif($apple == 1) {
  echo "食べる";
} else {
  echo "食べない";
}

$appleが「2」の場合、「人にあげる」
$appleが「1」の場合、「食べる」
それ以外の場合、「食べない」
と書くことができます。このif文の条件はifとelseifで二つあります。

$apple == 2
$apple == 1

これらの条件ですが、$appleの値を確認しているだけで、同じ形になってます。
この様に、条件の値のみが異なる場合に、switch文を使うと便利です。

switch($apple) {
  case 2:
    echo "人にあげる";
    break;
  case 1:
    echo "食べる";
    break;
  default:
    echo "食べない";
}

$appleの部分は式を入れます。式がcaseの値と一致すれば、そのcase内に入ります。
全てのcaseに入らなかった場合、default内に入ります。if文で言うelseになります。
case内にあるbreakですが、忘れずに書いてください。
breakがないと、case内に入ったとしても次のcaseの値を見に行きます。

switch(式) {
  case 値1:
    処理1;
    break;
  case 値2:
    処理2
    break;
  default:
    処理3;
}

今回、式には$appleを入れましたが、変数同士の計算式を入れたりもします。

まとめ

if文とswitch文について説明しました。
if文は変数同士の大小を比較したり、複数条件を扱う場合に使われます。
switch文は式や変数の値が3パターン以上ある場合に使われます。

条件分岐から一気にプログラミングっぽくなったと思います。
変数に入れる値を変えるだけで、表示される内容を変えれるので色々試してみて下さい。

次回講座:繰り返し
【PHP入門⑤】繰り返し ~初心者でも安心!基礎から学べるプログラミング講座~

タイトルとURLをコピーしました