採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

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";