for で配列を走査する
テクノロジ系 / array-basic (添字配列・配列関数・explode/implode)
for で配列を走査する
Lesson 4 / Chapter 5
添字を 0 から count() - 1 まで動かす
<?php
$nums = [10, 20, 30];
for ($i = 0; $i < count($nums); $i++) {
echo $nums[$i] . "\n";
}実行結果:
10 20 30
$i = 0から始める (添字は 0 始まり)$i < count($nums)の間ループ$nums[$i]で現在の要素を取り出す
条件は < と <= を間違えない
for ($i = 0; $i < count($nums); $i++) { // 正しい
for ($i = 0; $i <= count($nums); $i++) { // ❌ 1 個多くアクセスして範囲外- 添字は 0 から
count() - 1まで が有効 $i < count($nums)(より小さい) が正解$i <= count($nums)だと最後で範囲外アクセスになる
ループの中で合計を計算
<?php
$nums = [10, 20, 30, 40, 50];
$sum = 0;
for ($i = 0; $i < count($nums); $i++) {
$sum += $nums[$i];
}
echo $sum . "\n"; // 150$sum = 0;で初期化- ループの中で
$sum += $nums[$i];を繰り返す array_sum()を使わなくても同じ結果になる
ループの中で最大値を探す
<?php
$nums = [22, 30, 18, 27, 25];
$best = $nums[0]; // 最初の要素を仮の最大に
for ($i = 1; $i < count($nums); $i++) {
if ($nums[$i] > $best) {
$best = $nums[$i];
}
}
echo $best . "\n"; // 30- まず最初の要素を「仮の最大」に置く
- 2 番目以降を見て、大きければ更新する
max()を使わない実装の定番
なぜ手で書くのか
- 関数 1 つで終わる処理でも、ループの 中身を理解 すると応用がきく
- 例: 「最大値の 添字 を取りたい」「合計ではなく 積 が欲しい」
- 関数では足りないとき、自分で書ける必要がある
このチャプターでできるようになること
✅ for ($i = 0; $i < count($arr); $i++) で全要素を走査できる
✅ ループの中で合計を計算できる
✅ ループの中で最大値を探せる
✅ 添字の範囲外 (<= 問題) を避けられる
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — 全要素を出力
問題
配列 [10, 20, 30, 40, 50] の全要素を for ループで 1 行ずつ 出力してください。
期待される出力:
10 20 30 40 50
採点
php scripts/grade.php topics/array-basic/ch05-for-array/drill/01-print-all/
ヒント
$nums = [10, 20, 30, 40, 50];for ($i = 0; $i < count($nums); $i++) { echo $nums[$i] . "\n"; }
ドリル 02 — for で合計
問題
配列 [5, 10, 15, 20, 25] の合計を for ループ で計算して 1 行出力してください。
array_sum() は使わないこと。
期待される出力:
75
採点
php scripts/grade.php topics/array-basic/ch05-for-array/drill/02-sum-loop/
ヒント
$nums = [5, 10, 15, 20, 25];$sum = 0;for ($i = 0; $i < count($nums); $i++) { $sum += $nums[$i]; }echo $sum . "\n";
ドリル 03 — for で最大値
問題
配列 [14, 27, 9, 41, 33, 20] の最大値を for ループ で探して 1 行出力してください。
max() は使わないこと。
期待される出力:
41
採点
php scripts/grade.php topics/array-basic/ch05-for-array/drill/03-find-max/
ヒント
$nums = [14, 27, 9, 41, 33, 20];$best = $nums[0];で仮の最大に最初の要素を入れるfor ($i = 1; $i < count($nums); $i++) { if ($nums[$i] > $best) $best = $nums[$i]; }echo $best . "\n";