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

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";