• このエントリーをはてなブックマークに追加

while

ループというものは繰り返して、同じような処理を行うときに使う。1回2回位のHTMLのブロックを表示させるならば、PHPをわざわざ使うということもないのかもしれないが、5回6回と同じタグを表示させたり、自動的に利用できるデータが準備できるのであれば、ループを使ったほうが効率がいい。

ただ単に繰り返しの処理を行うだけだと、複雑な法則に沿って自動処理が行い。そんなときにはifなどと組み合わせることで、ループ途中で、特定の条件のみを抽出したり・分岐することができる。

あまりよいループではないが、break;することでループを途中終了させることができる。本来は開始から終了まで最大限回して・複雑に処理してこそ意味が出てくる。

単純なループ処理

単純に5回繰り返した後に、条件から外れてループを脱出する処理です。規則に沿って繰り返される処理は、こういった短いコードを記述してループ処理を行うことで、時間短縮することができます。

<?php
$i = 1;
while ( $i <= 5 ) {
echo $i . "回目<br>";
$i++;
}
?>

無限ループ

永久に処理が終わらないプログラム。終了条件に問題があるために、こういったコードは書かないようにしなければいけない。

<?php
/* コメントアウトしています。
$i = 1;
while ( $i > 0 ) {
echo $i . "回目<br>";
$i++;
}
*/
?>

分岐処理を加えて一工夫

偶数のときに処理したいのならば、if分を使って分岐させるのも良い。あまり算を使って処理したら、偶数かそうではないときにそれぞれ分岐できる。

<?php
$i = 1;
while ( $i <= 10 ) {
if ( $i % 2 == 0 ) {
echo $i . "回目<br>";
}
$i++;
}
?>

短い処理

単純な場合はアイデアとしては余り算の処理も面白いが、2つずつ数字を足して表示したほうが無駄がなく処理が早い。

<?php
$i = 2;
while ( $i <= 10 ) {
echo $i . "回目<br>";
$i = $i + 2;
}
?>

foreach

配列を使ってループする

foreachはwhileと違って、開始の条件・終了の条件を考えなくてもいい。配列の数だけループするので、配列の数を数えて、それだけループするといった処理は必要ない。whileで実現しようとするとそうなる。
さらに、配列からひとつずつ取り出したデータを指定した変数に格納しながら繰り返し処理できるので大変処理が捗る。

<?php
$array = array('地球', '火星', '金星');
foreach ( $array as $data ) {
echo $data . '<br>';
}
?>

二次元配列を使ってループする

ループの中にループを入れるとこのようなことも可能になる。

<?php
$array = array(
array(
'100円',
'1000円',
'10000円',
),
array(
'50円',
'500円',
'5000円',
)
);
foreach ( $array as $data1 ) {
foreach ( $data1 as $data2 ) {
echo $data2 . '<br>';
}
}
?>

連想配列

連想配列は、キーと値をセットにした配列。通常の配列は、番号指定だが、連想配列は任意のものを指定するときにキーという任意の文字列を使用できる。入っている値が数字と比べ、想像可能になる。

<?php
$array = array(
'aichi' => '愛知県',
'gifu' => '岐阜県',
'mie' => '三重県',
);
foreach( $array as $key => $value ){
echo '<b>key:</b>' . $key . '/<b>value:</b>' . $value . '<br>';
}
?>