多次元配列 / ch11 — 入力 CSV を 2 次元配列にする / 演習 02

📝 ドリル 02 — CSV を読んで各列の合計を出力

問題

標準入力で次のような数値 CSV (3 行 3 列) が与えられます。

入力例:

1,2,3
4,5,6
7,8,9

これを 2 次元配列にし、各列の合計 を 1 行ずつ (左の列から順に) 出力してください。

期待される出力:

12
15
18

採点

php scripts/grade.php v2/topics/06-array-multi/ch11-csv-to-2d/drill/02-sum-csv-col/

ヒント

  • 1 行ずつ fgets(STDIN) で読み、explode(",", $line) で分割
  • 数値計算するので各要素は (int) で整数に変換
  • 列数を取って外側 for $j、内側で全行の $row[$j] を加算

テストケース

標準入力

1,2,3
4,5,6
7,8,9

期待される出力

12
15
18

📄 starter.php(雛形)

このコードから書き始めてください。

<?php

// TODO: 標準入力の数値 CSV (3 行 3 列) を 2 次元配列にして、各列の合計を出力する
// ヒント:
//   $table = [];
//   while (($line = fgets(STDIN)) !== false) {
//       $line = rtrim($line, "\n");
//       if ($line === "") continue;
//       $cols = explode(",", $line);
//       $row = [];
//       foreach ($cols as $c) {
//           $row[] = (int) $c;
//       }
//       $table[] = $row;
//   }
//
//   $colCount = count($table[0]);
//   for ($j = 0; $j < $colCount; $j++) {
//       $sum = 0;
//       foreach ($table as $row) {
//           $sum += $row[$j];
//       }
//       echo $sum . "\n";
//   }
✅ 解答例を見る(自分で解いてから)
<?php

$table = [];
while (($line = fgets(STDIN)) !== false) {
    $line = rtrim($line, "\n");
    if ($line === "") continue;
    $cols = explode(",", $line);
    $row = [];
    foreach ($cols as $c) {
        $row[] = (int) $c;
    }
    $table[] = $row;
}

$colCount = count($table[0]);
for ($j = 0; $j < $colCount; $j++) {
    $sum = 0;
    foreach ($table as $row) {
        $sum += $row[$j];
    }
    echo $sum . "\n";
}