概要
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]) を書き換えて出力 |
📝 演習: ドリル 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";