概要
組み込み関数だけで完結する処理はラクだが、現実には 「合計と同時に平均も出したい」「ある条件の要素だけ加算したい」 のように、関数 1 つでは足りない複合処理がよく出てくる。そんな時に必要なのが for ループで配列を走査する 技術。配列の添字を 0 から count($arr) - 1 まで動かして、1 要素ずつ取り出して処理を組み立てる。
定型は for ($i = 0; $i < count($arr); $i++) { ... $arr[$i] ... } の形。ループの中で $arr[$i] を使えば、現在の要素にアクセスできる。「ループ条件で毎回 count($arr) を呼ぶと遅いのでは」と心配する人もいるが、PHP の count は内部にカウンタを持っていて、配列のサイズを O(1) で返す。よほど巨大でなければ気にしなくていい。
ここでのドリルでは array_sum や max を あえて使わずに 同じ処理を for で組み直す。これは「組み込み関数の中身ではこういうループが走っている」ことを体感するための練習で、内部動作のイメージを持っていると、後で「自分の要件にぴったり合う組み込み関数が無いとき」に for で書き起こせる。関連トピックの array-assoc では連想配列向けの foreach も登場するので、まずは添字を直接動かす for に慣れておく。
学習目標
for ($i = 0; $i < count($arr); $i++)で配列の全要素を 1 つずつ処理できる- 走査中に合計や最大値を計算できる
array_sum/maxを 使わずに 同じ処理を組める
ドリル
| no | 内容 |
|---|---|
| 01 | for で配列の全要素を 1 行ずつ出力 |
| 02 | for で配列の合計を計算して出力 (array_sum 使わない) |
| 03 | for で配列の最大値を探して出力 (max 使わない) |
📝 演習: ドリル 01 — 全要素を出力
問題
配列 [10, 20, 30, 40, 50] の全要素を for ループで 1 行ずつ 出力してください。
期待される出力:
10
20
30
40
50ヒント
$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ヒント
$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ヒント
$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";