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

各行の合計を出す

テクノロジ系 / array-multi (多次元配列・オブジェクトリスト・CSV)

各行の合計を出す

Lesson 6 / Chapter 6

行ごとに合計したい

<?php
$table = [
    [1, 2, 3],   // 行 0 の合計 = 6
    [4, 5, 6],   // 行 1 の合計 = 15
    [7, 8, 9],   // 行 2 の合計 = 24
];
  • 各行は 1 次元配列なので、合計の出し方は array-basic トピックと同じ
  • 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";
}

実行結果:

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";
}
  • 行が変わるたびに $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 (累計になってしまう)
}
  • 「各行の合計」のはずが「ここまでの累計」になる
  • 行ごとの合計を出すなら、外側ループの で初期化する

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

✅ 各行の合計を 1 行ずつ出力できる

array_sum で簡潔に書ける

✅ 内側 foreach で $sum を組み立てる書き方も書ける

✅ 行ごとにリセットすべき変数の位置が分かる

→ ドリルへ

考えてみよう

既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。

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

問題

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

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

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

期待される出力:

6
15
24

採点

php scripts/grade.php topics/array-multi/ch06-row-sum/drill/01-each-row-sum/

ヒント

  • foreach ($table as $row) { echo array_sum($row) . "\n"; }
  • もしくは内側 foreach で $sum を組み立てる (行ごとに 0 にリセット)