※この記事は「2021年6月5日」に更新しました。
前回は、配列について学びました。
今回は、条件分岐とループ処理についてです。
プログラムというのは、上から順番に処理されていきます。
しかし、結果によって処理を分岐したいということもあれば、ある結果になるまで繰り返し処理をしたいということもあるかと思います。
その時に使うのが分岐処理や繰り返しなどの制御構造です。
条件分岐
条件分岐の基本を紹介します。
if文
英語の if と同じなんですが、条件を満たしていれば、処理をするというような使い方をします。
if (条件) { 条件が真のとき実行 }
例えば、以下のような感じで使います。
$a = 5; if ($a == 5){ echo '変数 $a の値は 5 です。'; }
上の例だとまず $a に 5 が代入され、次の if で $a の値が 5 に等しければ、{} で囲まれた部分が処理されます。
if~else文
if だけだと条件を満たさない場合は処理をせずにそのまま抜けてしまうだけになります。
条件を満たさない場合に満たす場合と別の処理をさせるとき、この if~else文 を使います。
if (条件) { 条件が真のとき実行 } else { 条件が偽のとき実行 }
例えば、以下のような感じで使います。
$a = 1; if ($a == 5){ echo '変数 $a の値は 5 です。'; } else { echo '変数 $a の値は 5 以外です。'; }
この場合、結果は以下のようになります。
変数 $a の値は 5 以外です。
if~elseif文
if~else文は、条件が成立するしないで処理が二つに分かれるのがポイントでした。
今回の if~elseif文は 複数の条件を順番に指定していくことができます。
if (条件1) { 条件1が真のとき実行 } elseif(条件2) { 条件2が真のとき実行 } else { 条件が偽のとき実行 }
例えば、以下のような感じで使います。
$a = 1; if ($a == 5){ // 条件1($a == 5)を満たした echo '変数 $a の値は 5 です。'; } else if ($a == 2) { // 条件2($a == 2)を満たした echo '変数 $a の値は 2 です。'; } else if ($a == 3) { // 条件3($a == 3)を満たした echo '変数 $a の値は 3 です。'; } else { // 条件1、条件2、条件3 を満たしていない echo '変数 $a の値は 2、3、5 以外です。'; }
この例だとわかりにくいのですが、ポイントは上から順番に絞り込みされていくところです。
条件1 の段階で条件を満たせば、条件1 の処理だけされて if~elseif文を抜けます。
満たしていない場合は、次の条件2 の判定へ移ります。
switch文
実は上の例は if~elseif文より、今回の switch文でコードを書いた方がわかりやすいです。
$a = 1; switch ($a) { case 5: echo "5 です。"; break; case 2: echo "2 です。"; break; case 3: echo "3 です。"; break; default: echo "2、3、5 以外です。"; break; }
値を列挙していき、それに対しての処理を分ける場合に便利です。
ただし if文のように条件に値の範囲を記述するようなことはできません。
break; という処理は、終了まで一気にジャンプするということで、この場合 switch文の最後の } までジャンプします。
あと case と defalut の末尾は:(コロン)なので注意してください。
ループ処理
ループ処理の基本を紹介します。
while文
while文は、もっとも簡単なループ文です。
while (条件) { 条件が真である限り実行 }
例えば、以下のような感じで使います。
$cnt = 1; while ($cnt < 5) { echo $cnt . '回目。<br />' ++$cnt; }
この処理の結果は以下の通りです。
1回目。 2回目。 3回目。 4回目。
$cnt < 5 という条件が真である(満たしている)限り、ずっと処理が繰り返されます。
$cnt が 5 の段階で条件を満たさなくなるので、ループ処理を抜けます。
for文
おそらく、while文よりも for文の方がわかりやすいと思います。
初期化、ループ条件の判定、条件の変化をまとめて書きます。
for (初期化; 条件; 条件の変化) { 条件が真である限り実行 }
例えば、以下のような感じで使います。
for ($cnt = 1; $cnt < 5; ++$cnt) { echo $cnt . '回目。<br />'; }
このプログラムは、先程の while文で書いたものと同じ内容です。
foreach文
foreach文は、配列の要素の数だけ処理が繰り返されるというものです。
$arr = array(10,20,30,40,50); foreach ($arr as $key => $val) { echo 'キー' . $key . 'の値は' . $val . 'です。<br />'; }
まず、array関数を使って配列 $arr を初期化しています。
そして foreach文です。
配列の要素の数だけ処理が繰り返されます。
従って結果は以下の通りです。
キー0の値は10です。 キー1の値は20です。 キー2の値は30です。 キー3の値は40です。 キー4の値は50です。
コロン構文
捕捉ですが、よく使われるので紹介します。
先程の if文、while文、for文などは、コロン構文という別の書き方で表現することができます。
例えば、if~else文で紹介した例は以下のように書き換えることができます。
$a = 1; if ($a === 5): echo '変数 $a の値は 5 です。'; else : echo '変数 $a の値は 5 以外です。'; endif;
これを使うメリットは、HTML と混在して書くときに視認性が上がるということです。
最後に
いかがでしょうか。
種類が色々ありますが、違いを理解して適切な構文を使えるようにがんばります。
次回は、関数についてです。
プログラミングらしくなってきました。
基礎ですが、確実にやっていきましょう。