ch03 12章中 3章目

ch03 — 2 次元配列の要素を書き換える

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch03 — 2 次元配列の要素を書き換える」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch03 — 2 次元配列の要素を書き換える」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch03 — 2 次元配列の要素を書き換える」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

2 次元配列の要素を 書き換える 書き方は、アクセスの構文 ($arr[行][列]) の 左辺に代入する だけ。$table[1][1] = 99; と書けば 1 行 1 列目のマスが 99 に更新される。1 次元配列の $arr[0] = 値 の発想をそのまま入れ子にしただけなので、ch02 までを通った後なら自然に書ける。

ポイントは「書き換えた後の値は、以降の処理で読むと新しい値になっている」という当たり前の挙動を体感すること。$table[1][1] = 99; の後に echo $table[1][1]; をすれば 99 が出る。代入は その場で 2 次元配列の中身を破壊的に変える ので、元の値を残したい場合はコピーを取る必要がある。

存在しない添字に代入すると 新しい要素が追加される ($table[3][0] = 0; のように 3 行目を新設できる)。これは便利だが、表として揃った状態を期待している後段の処理 (ch06 行合計 / ch07 列合計) を壊しやすいので、「表の形を保つ」ことを意識しながら更新する。中央のマス $table[1][1] だけを書き換えるドリルで、行・列の指定がぶれないことを確かめる。

学習目標

  • $arr[行][列] = 値; で 2 次元配列の特定の要素を更新できる
  • 書き換え後の値が以降の処理に反映されると理解する

ドリル

no 内容
01 3×3 配列の中央 ($arr[1][1]) を書き換えて出力

解説スライド 全 5 枚

右の ボタン キー(またはスワイプ)で次のスライドに進めます。 下の「縦表示」を開くと全スライドを一気に読めます。

  1. 2 次元配列を書き換える

    Lesson 6 / Chapter 3

  2. 添字 2 つを左辺に書く

    <?php
    $table = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9],
    ];
    $table[1][1] = 99;
    print_r($table);

    実行結果 (1 行目だけ):

    [1] => Array ( [0] => 4 [1] => 99 [2] => 6 )
    • $arr[行][列] = 値; で書き換えられる
    • 1 次元配列と同じく、添字を = の左に置いて代入
  3. 書き換え前後を比べる

    <?php
    $table = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9],
    ];
    echo $table[0][0] . "\n";   // 1
    $table[0][0] = 100;
    echo $table[0][0] . "\n";   // 100
    • 書き換え後に同じ添字を読むと、新しい値が返る
    • 書き換えは破壊的 (元の値は残らない)
  4. 行ごと差し替えることもできる

    <?php
    $table = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9],
    ];
    $table[1] = [40, 50, 60];   // 1 行まるごと差し替え
    print_r($table[1]);

    実行結果:

    Array ( [0] => 40 [1] => 50 [2] => 60 )
    • 内側に配列を代入すれば、行をまるごと置き換えられる
    • ただし長さが揃わないと、後の「列ごとの合計」が壊れる
  5. このチャプターでできるようになること

    $arr[行][列] = 値; で 1 マスを書き換えられる ✅ 書き換え後に読むと新しい値が返ると分かる ✅ $arr[行] = [...] で 1 行まるごと差し替えられる

    → ドリルへ

1 / 5
📜 スライドを全部一気に読む(縦表示)

Lesson 6 / Chapter 3


添字 2 つを左辺に書く

<?php
$table = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];
$table[1][1] = 99;
print_r($table);

実行結果 (1 行目だけ):

[1] => Array ( [0] => 4 [1] => 99 [2] => 6 )
  • $arr[行][列] = 値; で書き換えられる
  • 1 次元配列と同じく、添字を = の左に置いて代入

書き換え前後を比べる

<?php
$table = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];
echo $table[0][0] . "\n";   // 1
$table[0][0] = 100;
echo $table[0][0] . "\n";   // 100
  • 書き換え後に同じ添字を読むと、新しい値が返る
  • 書き換えは破壊的 (元の値は残らない)

行ごと差し替えることもできる

<?php
$table = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];
$table[1] = [40, 50, 60];   // 1 行まるごと差し替え
print_r($table[1]);

実行結果:

Array ( [0] => 40 [1] => 50 [2] => 60 )
  • 内側に配列を代入すれば、行をまるごと置き換えられる
  • ただし長さが揃わないと、後の「列ごとの合計」が壊れる

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

$arr[行][列] = 値; で 1 マスを書き換えられる ✅ 書き換え後に読むと新しい値が返ると分かる ✅ $arr[行] = [...] で 1 行まるごと差し替えられる

→ ドリルへ

この章で取り組む 演習問題の流れ (1ステップ)
  1. 01 ドリル 01 — 中央のマスを書き換える README.md starter.php answer.php

演習問題の詳細

この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。

ドリル 01 — 中央のマスを書き換える

問題

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

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

中央 ($table[1][1]) を 99 に書き換えてから、配列の中身を 1 行 1 マスずつ 上から順に出力してください。

期待される出力:

1
2
3
4
99
6
7
8
9

ヒント

  • まず $table[1][1] = 99; で中央を上書き
  • そのあと入れ子 for ループ ($i = 0..2, $j = 0..2) で echo $table[$i][$j] . "\n";

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

演習問題(1問)

  1. ドリル 01 — 中央のマスを書き換える

    README.md starter.php answer.php

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

完了にすると進捗に反映されます