リスを倒す 『初めてのPHP,MySQL,JavaScript&CSS』

『初めてのPHP,MySQL,JavaScript&CSS』勉強奮闘記

4-3. PHPの式と制御の流れ③ループ処理

更新が滞ってしまいました…
サボってたわけではないんですが、いや言い訳なんですけど体調やばそうな感じがあったのにお酒飲んでなおそうとしたら見事に悪化したというやつですね…
ただ少し空いちゃうと忘れてしまってそうでこわい。

気を取り直して頑張ります。
今回は式をループさせるwhile文とfor文について勉強し、ループを抜け出したりスキップさせたりすることができるぞというのを学びます。


1-1. ループさせる意味


前回勉強した式条件はある条件がTRUEだったときに通る道を通ったあとに、もとのルートに戻りました。
ただ、ユーザーの値の入力や、しかるべき結果への到達など何らかの事象が発生するまで、一連の同じコードを使いたいときがあります。
PHPを使うと、一旦ループ道に入れて、ある条件の時にループを抜け出せるように式を作ることもできます。すげえ…
用途によって、while文とfor文を使い分けるとのことで3つのループ文を見ていきます。


1-2. whileループ


while文は、条件を優先的に繰り返したいときに使います。
何回繰り返すかは重要ではなく、定義した条件式がTRUEの間ずっと処理を繰り返すという式にしたいときにはwhileです。

◎whileループの書き方


初期値;
while(条件式){
処理を実行する増減式;

試しに12の掛け算表を表示する式を作成してみます。


<?php
$count = 1;

while ($count <= 12)
{
echo "$count times 12 is " . $count * 12 . "<改行 />";
++$count;
}
?>

まず変数$countを値1に初期化し、$countが12以下の場合という条件式を書きました。
処理を実行する増減式には、$countに12を掛けた値を出力、読みやすくするために改行(ほんとうはbrだけど、はてな記法の影響で表示されないので改行とかきました)を入れて強制的に改行させています。
そのあと、$countの値をインクリメントして、これを12までループさせています。
f:id:taro-blog2323:20160724004314p:plain

1-3. do...whileループ


do...whileループは、コードのブロックを少なくとも1回は実行し、条件をそのあとで評価したいときに使用します。

◎do...whileループの書き方


do{
実行する処理1;
実行する処理2;
}while(条件式);


1-4. forループ


forループは、繰り返し回数を優先的に指定したい場合に使います。
whileループに比べてforループはループ処理が制御できるパラメータを使用します。
ループに入るときに変数を設定し、ループの繰り返し中に条件をテストして、さらに各繰り返しの痕に変数を変更する機能を合わせ持ちます。

◎forループの書き方


for{カウンタの初期値; ループ処理の条件式; 増減式){
実行する処理1;

whileループで使った12の掛け算表を作成してみます。


<?php
for ($count = 1 ; $count <= 12 ; ++$count)
echo "$count times 12 is " . $count * 12 . "<改行>";
?>

結果はwhileループと同じですが、ここでは()内の3つの式のパラメータを取ります。
f:id:taro-blog2323:20160724004314p:plain

1-5.ループを抜け出る


ループを抜け出るにはswitchステートメントの時と同じbreakコマンドを使用します。ステートメントのどれかがエラーを返し、ループの実行が難しくなったときに必要です。

◎forループの抜け出しかた


if(ループ終了条件){
break;
}

ループ文の後ろにbreakを付けるだけ、なのか?
とはいえ、私のような初心者にはちょっと難しいっす、リスさま…
実際にコードを書いてみます。

<?php
30){
break;
}
if($count %2==0){
echo '$countは偶数で、値は'.$count.'です<改行>';
}
$count++;
}
?>

$countが30より大きい場合にループから抜け、$countを2でわって余りがない時に表示させるように書いてみました。
f:id:taro-blog2323:20160724155049p:plain
結果は30までの偶数値が出力されました。


1-6.ループをスキップできるcontinueステートメント


continueステートメントは、breakステートメントと少し似ていますが、現行のループ処理を停止し、別のループ処理に移るように命令するときに使います。
コードが現行ループのどこまで実行されるか不明で、プロセッササイクルを節約したいときやエラーの発生を回避したいときに役立ちます。

ゼロで割り算するときに出てしまうエラーを回避するコードで書いてみます。


<?php
$j = 10;

while ($j > -10)
{
$j--;
if ($j == 0) continue;
echo (10 / $j) . "<改行>";
}
?>

$jに代入される9から-10までの値で10を割った結果が、値が0のときを除いて出力されます。
f:id:taro-blog2323:20160724161406p:plain


以上、しゅうりょうー
4章おわたーーーー!