概要

各列の合計 を出すのは、行合計 (ch06) より一段難しい。配列は「行 (= 内側配列) の並び」として持っているので、列方向に取り出すには 添字で列番号を固定して全行を走査する 必要がある。発想を「外側で列、内側で行」と入れ子の順を入れ替えるか、または $colSum[$j] のような列ごとの合計を貯める配列を用意して、行を回しながら加算する ことになる。

典型パターンは後者。$colSum = [0, 0, 0]; を用意しておき、foreach ($table as $row) { foreach ($row as $j => $value) { $colSum[$j] += $value; } } のように 内側 foreach のキー $j (列番号) を使って列ごとの合計を貯める。1 回のループで全列の合計が同時に組み立てられるので効率が良い。

この章では「全行が同じ列数である」ことが暗黙の前提になる。行ごとに列数がバラつく (ジャグ配列) と $colSum[$j] が未定義になったり、列数の取り方 (count($table[0]) を「1 行目基準」で取るのが普通) が壊れる。表として扱うなら全行同じ列数、というルールがここで効いてくる。ch11 の CSV パースでもこの前提を守ることで、列ごとの集計がきれいに繋がる。

学習目標

ドリル

no 内容
01 3 行 3 列の配列の各列の合計を 3 行で出力

演習: ドリル 01 — 各列の合計を出力

問題

次の 3×3 の 2 次元配列が与えられています。

$table = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];

の合計を 1 行ずつ出力してください (左の列から順に)。

期待される出力:

12
15
18

ヒント

この章を AI に聞く

  1. 「ch07 — 各列の合計を出力」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch07 — 各列の合計を出力」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch07 — 各列の合計を出力」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch07 — 各列の合計を出力」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE