2 次元配列を書き換える
テクノロジ系 / array-multi (多次元配列・オブジェクトリスト・CSV)
2 次元配列を書き換える
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 行まるごと差し替えられる
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 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
採点
php scripts/grade.php topics/array-multi/ch03-2d-modify/drill/01-overwrite/
ヒント
- まず
$table[1][1] = 99;で中央を上書き - そのあと入れ子 for ループ (
$i = 0..2,$j = 0..2) でecho $table[$i][$j] . "\n";