多次元配列 / 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
▶ 3v4l で実行
  • $table[行][列] の順で書く
  • 1 つ目の添字 = 外側の配列 (どの行か)
  • 2 つ目の添字 = その行の中の何番目か

順を追って読む

$table[1][2]
▶ 3v4l で実行

これは:

  1. $table[1]1 行目の配列 [4, 5, 6] を取り出す
  2. その配列の [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
▶ 3v4l で実行

「行・列の番号 = 添字」をイメージしながら書く。


範囲外を指定すると null (警告)

<?php
$table = [
    [1, 2, 3],
    [4, 5, 6],
];
echo $table[5][0];   // Warning: Undefined array key 5
▶ 3v4l で実行
  • 存在しない添字を取ると null (PHP 8 では Warning も出る)
  • 「行数・列数」を意識して書くと事故が減る
  • count($table) で行数、count($table[0]) で列数 (1 行目基準)

このチャプターでできるようになること

$arr[行][列] で任意の要素を取り出せる ✅ 添字は外側 → 内側の順だと分かる ✅ 四隅・特定の行・特定の列を 1 個ずつ取り出せる ✅ 範囲外アクセスが起こる仕組みを知っている

→ ドリルへ

演習問題(2問)

  1. ドリル 01 — 四隅を出力する

    starter.php answer.php

  2. ドリル 02 — 1 行分を出力する

    starter.php answer.php

サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリ(nomuraya-dojo/php)を clone してください。