多次元配列 / ch02
2 次元配列にアクセスする
<!-- LLM_CONTEXT: Lesson 6 / Chapter 2 目的: 2 次元配列の特定の要素を $arr[行][列] で取り出せるようにする 扱わない: 書き換え (ch03) / foreach 走査 (ch04) 読み上げ時間目安: 3 分半〜4 分 -->
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 個ずつ取り出せる
✅ 範囲外アクセスが起こる仕組みを知っている
→ ドリルへ
演習問題(2問)
サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリ(nomuraya-dojo/php)を clone してください。