2 次元配列にアクセスする
テクノロジ系 / array-multi (多次元配列・オブジェクトリスト・CSV)
2 次元配列にアクセスする
Lesson 6 / Chapter 2
添字を 2 つ並べて取り出す
<?php
$table = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
echo $table[0][0] . "\n"; // 1
echo $table[1][2] . "\n"; // 6
echo $table[2][1] . "\n"; // 8$table[行][列]の順で書く- 1 つ目の添字 = 外側の配列 (どの行か)
- 2 つ目の添字 = その行の中の何番目か
順を追って読む
$table[1][2]
これは:
$table[1]で 1 行目の配列[4, 5, 6]を取り出す- その配列の
[2]番目、つまり6を取り出す
→ 添字は 外側から順に内側へ たどる。
四隅を取り出してみる
<?php
$table = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
echo $table[0][0] . "\n"; // 左上 = 1
echo $table[0][2] . "\n"; // 右上 = 3
echo $table[2][0] . "\n"; // 左下 = 7
echo $table[2][2] . "\n"; // 右下 = 9「行・列の番号 = 添字」をイメージしながら書く。
範囲外を指定すると null (警告)
<?php
$table = [
[1, 2, 3],
[4, 5, 6],
];
echo $table[5][0]; // Warning: Undefined array key 5- 存在しない添字を取ると
null(PHP 8 では Warning も出る) - 「行数・列数」を意識して書くと事故が減る
count($table)で行数、count($table[0])で列数 (1 行目基準)
このチャプターでできるようになること
✅ $arr[行][列] で任意の要素を取り出せる
✅ 添字は外側 → 内側の順だと分かる
✅ 四隅・特定の行・特定の列を 1 個ずつ取り出せる
✅ 範囲外アクセスが起こる仕組みを知っている
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — 四隅を出力する
問題
次の 3×3 の 2 次元配列が与えられています。
$table = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];この配列の四隅 (左上 → 右上 → 左下 → 右下) を 1 行ずつ出力してください。
期待される出力:
1 3 7 9
採点
php scripts/grade.php topics/array-multi/ch02-2d-access/drill/01-corner/
ヒント
- 左上 =
$table[0][0] - 右上 =
$table[0][2] - 左下 =
$table[2][0] - 右下 =
$table[2][2]
ドリル 02 — 1 行分を出力する
問題
次の 3×3 の 2 次元配列が与えられています。
$table = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];2 行目 (添字 1) の 3 要素を 1 行ずつ順に出力してください。
期待される出力:
4 5 6
採点
php scripts/grade.php topics/array-multi/ch02-2d-access/drill/02-row-print/
ヒント
- 2 行目は添字
1 $table[1][0],$table[1][1],$table[1][2]を 1 行ずつ出力