プログラミング学習記録 #10 繰り返し処理
●foreach
配列の前要素に繰り返し処理を行う
$numbers = [1, 2, 3, 4];
foreach ($numbers as $number) {
echo $number . PHP_EOL;
}
//
1
2
3
4
連想配列の場合
$scores = [
'suzuki' => 60,
'tanaka' => 70,
'kimura' => 60,
];
foreach ($scores as $key => $score) {
echo $key . ':' . $score . '点' . PHP_EOL;
}
//
suzuki:60点
tanaka:70点
kimura:60点
$key => $score とすることで連想配列のキーも取り出せる
●for
決められた回数分の繰り返し処理を行う時に使う
for ($i = 1; $i <= 10; $i++) {
echo $i . PHP_EOL;
}
//
1
2
3
4
5
6
7
8
9
10
●while
ある条件を満たす間だけ繰り返し処理を行いたい時に使う
$i = 0;
while ($i <= 100) {
echo $i . PHP_EOL;
$i += 10;
}
//
0
10
20
30
40
50
60
70
80
90
100
●continue, break
continue:ループをスキップしたい時に使う
break:ループを抜けたい時に使う
$numbers = [1, 4, 8, 'a', 10,];
$even = 0;
foreach ($numbers as $number) {
if (!is_numeric($number)) {
echo '数値ではないので処理を中断' . PHP_EOL;
break;
}
if ($number % 2) {
continue;
}
$even += $number;
}
echo '偶数の値の合計:' . $even . PHP_EOL;
//
数値ではないので処理を中断
偶数の値の合計:12
$numbersの値が1の時は奇数なのでcontinueによりスキップされる
$numbersの値がaの時数値ではないのでbreakにより処理が中断される
●繰り返し処理の注意点
・繰り返し処理は複数種類があるので適切な処理を選択する
●繰り返し処理のポイント
○ループ開始時
・初期化コードはループの直前に置く
・無限ループにはwhile(true)を使う
○ループ本文
・ループのネスト(入れ子)を少なくする ※多くても3段階
・ループの前処理・後処理は先頭か末尾にまとめる
・ループは1回につき1つの機能を実行する
・ループは50行以内にまとめる(できれば20行以内)
○ループ終了時
・全てのケースでループが終了することを確認する
・ループの開始時と終了時をシミュレーションする