シンプルな名簿を作成(3):while/foreach文
while命令
- 最も基本的な繰り返し文
- P.87参照
while (条件式) {
…繰り返し実行する処理…
}
<?php $i = 0; //初期化式 while ($i < count($data)) { print('<li>'.$data[$i].'</li>'); $i++; //増減式 } ?>
- 条件が正しい(TRUEである)間は、{…}の中の処理を繰り返す
- この場合、条件式は「$i < count($data)」で、変数$i が配列$dataのサイズよりも小さい間、処理を繰り返します
- for命令との違いは、while命令が構文の中にカウンタ変数という考え方を持たない点です
- よって、while命令では「カウンタ変数」を自分で用意し、明示的に増減させるという手順が必要となります
《完成例》
<?php $data = array('山田太郎', '鈴木花子', '田中一郎', '山本久美子', '斎藤次郎', '佐々木裕子', '佐藤秀雄'); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>PHP入門教室</title> </head> <body> 名簿には<?php print(count($data)); ?>人が登録されています。 <ol> <?php $i = 0; while ($i < count($data)) { print('<li>'.$data[$i].'</li>'."\n"); $i++; } ?> </ol> </body> </html>
foreach命令
- 配列での利用に特化した繰り返し構文
- P.91参照
foreach (配列 as 仮変数) {
…繰り返し実行する処理…
}
<?php foreach($data as $d) { print('<li>'.$d.'</li>'."\n"); } ?>
- この場合、配列$dataの内容を変数$d にセットしながら、処理を繰り返しています
- 要素を一時的に保存するための要素(この場合 $d)のことを仮変数と呼びます
- 配列内容を順番に処理するような場合、for命令よりもforeach命令を使った方がコードがシンプルになります
《完成例》
<?php $data = array('山田太郎', '横山花子', '田中一郎', '山本久美子', '鈴木次郎', '星山裕子', '佐藤勝男'); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>PHP入門教室</title> </head> <body> 名簿には<?php print(count($data)); ?>人が登録されています。 <ol> <?php foreach($data as $d) { print('<li>'.$d.'</li>'."\n"); } ?> </ol> </body> </html>
繰り返し構文の使い分け
- ひとつの基準として、 foreach > for > while の順番に利用する
- foreachが最も利用局面が限定された命令で、whileが最も汎用的な、その分処理によってはコードが冗長になりやすい
命令 | 使いどころ |
---|---|
for | 繰り返しの回数を具体的に指定できる場合 |
while | 繰り返しによって条件式の TRUE / FALSE が変化する場合 |
foreach | 配列の内容を順番に処理したい場合 |
無限ループ
- 永遠に終わらないループのことを無限ループと呼びます
- 無限ループにならないように注意する必要があります
- P.89参照
まとめ
- while命令は、条件式が正しい間だけ{...}の内容を繰り返します
- 繰り返し構文の書き方によっては無限ループが発生するので注意が必要です
- foreach命令は、配列の内容を順番に取り出すときに便利です