foreachループ
foreachループは配列の各要素を繰り返す場合に使用します。例えばECサイトであれば、一般的にはショッピングカートの商品を配列に入れて管理しますが、カートの商品の合計金額を計算するにはどのようにすればいいでしょうか。ここでforeachループの登場です。foreachループは以下のように記述します。
foreach ( 配列名 as 変数名 ){ 繰り返したい処理 }
上記の「変数名」は任意に名前をつけて構いません。サンプルソースの「foreach.php」をメモ帳などで開いてください。
<html> <h2>foreach ループの例</h2> <body> <?php $cart = array(); $cart[0] = "コート"; $cart[1] = "セーター"; $cart[2] = "マフラー"; foreach( $cart as $item ) { print( "お買い上げの品物:$item<br>" ); } ?> </body> </html>
上記で、「$item
」はforeachループの中で初めて現れたスカラー変数です。この変数に「$cart
」配列の中身を1つずつ移し変えていきます。「$item
」の変数名は任意で、「$a
」や「$b
」でも構いませんが、一般的には人間が見て分かりやすい変数名をつけます。現在はカートの商品をプログラムに固定で記述するしかできませんが、今後学習が進むにつれ、クリックされた商品をカートに追加するような処理も可能になってきます。
では、サンプルを実行してみましょう。http://localhost/codezine4/foreach.phpにアクセスしてください。変数に各商品名が代入されながら、繰り返し表示されることが確認できると思います。
whileループ
最後にwhileループです。whileループは「ある条件を満たす間」繰り返すループです。例えば『当たりが出るまで抽選を繰り返す』などの条件で、処理を繰り返したい時に使用します。whileループは次の書式で記述します。
while( 継続条件 ){ 繰り返したい処理 }
mixiやブログなどで写真をアップするときの事を想像してみてください。アップした元々の写真は大きなサイズでも、実際の記事としては小さなサイズの写真が表示されます。これはサイトの裏方で写真を縮小しているためですが、このような処理をwhileループで記述することができます。
サンプルソースの「while.php」をメモ帳などで開いてください。
<html> <h2>while ループの例</h2> <body> <?php $width = 500; //画像の幅は500ピクセル // 画像が200ピクセル以下になるまで、90% ずつ縮小する。 while($width > 200 ){ $width = $width * 0.9; print("現在、画像は $width ピクセルです。<br>"); } print("最終的には $width ピクセルになりました。<br>"); ?> </body> </html>
上記は『横幅500ピクセルの写真を10%ずつ縮小し、200以下になるまで処理を続ける』という処理を、whileループを使用し擬似的に表現したプログラムです。画像の幅を格納する「$width
」が、200よりも大きい間($width > 200
)、ループを繰り返します。逆の言い方をすれば、「$width
」が200以下になった時点で、ループを終了するという事です。
では、サンプルを実行します。http://localhost/codezine4/while.phpにアクセスしてください。
まとめ
今回は、条件分岐と繰り返し(ループ)に関して説明をしました。条件分岐はif
、elseif
、else
というキーワードを用いて実現します。また、繰り返しは用途に応じてfor
、foreach
、while
の3種類の構文を使い分けます。
条件分岐やループを使う事でWebサイトの面白みが増します。どこに条件分岐やループが使われているかを考えながら、皆さんが普段使用しているサイトを見てみてください。また、できれば自分で作りたいWebサイトのアイディアを出し、それを条件分岐や繰り返しなどを利用して、実際にプログラムを書いてみてください。
- if、elseif、elseというキーワードを用いて、条件分岐を記述する。
- forループは、回数を指定して繰り返す事に向いている。
- foreachループは、配列の要素数だけ、繰り返す事に向いている。
- whileループは、ある条件に合致する間、何かを繰り返す時に使用する。