多次元配列 / ch06

各行の合計を出す

<!-- LLM_CONTEXT: Lesson 6 / Chapter 6 目的: 2 次元配列の「各行」の合計を計算・出力できるようにする 扱わない: 列ごとの合計 (ch07) 読み上げ時間目安: 3 分半〜4 分 -->

各行の合計を出す

Lesson 6 / Chapter 6


行ごとに合計したい

<?php
$table = [
    [1, 2, 3],   // 行 0 の合計 = 6
    [4, 5, 6],   // 行 1 の合計 = 15
    [7, 8, 9],   // 行 2 の合計 = 24
];
▶ 3v4l で実行
  • 各行は 1 次元配列なので、合計の出し方は L4 (配列基本) と同じ
  • array_sum($row) か、内側 foreach で $sum += $value

array_sum を使う書き方

<?php
$table = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];
foreach ($table as $row) {
    echo array_sum($row) . "\n";
}
▶ 3v4l で実行

実行結果:

6
15
24
  • 外側 foreach で行を 1 つずつ取り出す
  • array_sum($row) で 1 行分の合計を一発で計算

内側 foreach で組み立てる書き方

<?php
foreach ($table as $row) {
    $sum = 0;
    foreach ($row as $value) {
        $sum += $value;
    }
    echo $sum . "\n";
}
▶ 3v4l で実行
  • 行が変わるたびに $sum = 0 でリセット (これ重要)
  • 内側で 1 マスずつ足す
  • 行が終わったら echo $sum . "\n";

$sum = 0 のリセットを忘れると...

<?php
$sum = 0;   // ← 外側で 1 回しか初期化していない
foreach ($table as $row) {
    foreach ($row as $value) {
        $sum += $value;
    }
    echo $sum . "\n";   // 6, 21, 45 (累計になってしまう)
}
▶ 3v4l で実行
  • 「各行の合計」のはずが「ここまでの累計」になる
  • 行ごとの合計を出すなら、外側ループの で初期化する

このチャプターでできるようになること

✅ 各行の合計を 1 行ずつ出力できる ✅ array_sum で簡潔に書ける ✅ 内側 foreach で $sum を組み立てる書き方も書ける ✅ 行ごとにリセットすべき変数の位置が分かる

→ ドリルへ

演習問題(1問)

  1. ドリル 01 — 各行の合計を出力

    starter.php answer.php

サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリ(nomuraya-dojo/php)を clone してください。