ch02 12章中 2章目

ch02 — 2 次元配列にアクセスする

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch02 — 2 次元配列にアクセスする」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch02 — 2 次元配列にアクセスする」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch02 — 2 次元配列にアクセスする」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

2 次元配列を作ったら、次は 特定の要素を取り出す ところを覚える。書き方は $table[行][列] のように 添字を 2 つ並べる だけ。1 つ目の添字で外側の配列 (どの行か) を取り出し、2 つ目の添字でその行の中の何番目かを取り出す、という 外側 → 内側 の順に読むのがコツ。

$table[1][2] は「$table[1] で 1 行目の配列 [4, 5, 6] を取り出し → その [2] 番目で 6 を取り出す」と 2 段階で考えると迷わない。四隅を取り出す $table[0][0] (左上) / $table[0][2] (右上) / $table[2][0] (左下) / $table[2][2] (右下) のような典型パターンを手で書くと、「行と列の番号 = 添字」が体に入る。

存在しない添字を指定すると null が返り、PHP 8 系では Warning: Undefined array key も出る。事故を防ぐには count($table) で行数、count($table[0]) で列数 (1 行目基準) を意識して書く。この「範囲外アクセス」の感覚は、後の章で foreach に置き換える時にも生きてくる。

学習目標

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

ドリル

no 内容
01 3×3 配列の四隅 (左上 → 右上 → 左下 → 右下) を 1 行ずつ出力
02 3×3 配列の 2 行目 (添字 1) の 3 要素を 1 行ずつ出力

解説スライド 全 6 枚

右の ボタン キー(またはスワイプ)で次のスライドに進めます。 下の「縦表示」を開くと全スライドを一気に読めます。

  1. 2 次元配列にアクセスする

    Lesson 6 / Chapter 2

  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 つ目の添字 = その行の中の何番目か
  3. 順を追って読む

    $table[1][2]

    これは:

    1. $table[1]1 行目の配列 [4, 5, 6] を取り出す
    2. その配列の [2] 番目、つまり 6 を取り出す

    → 添字は 外側から順に内側へ たどる。

  4. 四隅を取り出してみる

    <?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

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

  5. 範囲外を指定すると 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 行目基準)
  6. このチャプターでできるようになること

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

    → ドリルへ

1 / 6
📜 スライドを全部一気に読む(縦表示)

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]

これは:

  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

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


範囲外を指定すると 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ステップ)
  1. 01 ドリル 01 — 四隅を出力する README.md starter.php answer.php
  2. 02 ドリル 02 — 1 行分を出力する README.md starter.php answer.php

演習問題の詳細

この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。

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

問題

次の 3×3 の 2 次元配列が与えられています。

$table = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];

この配列の四隅 (左上 → 右上 → 左下 → 右下) を 1 行ずつ出力してください。

期待される出力:

1
3
7
9

ヒント

  • 左上 = $table[0][0]
  • 右上 = $table[0][2]
  • 左下 = $table[2][0]
  • 右下 = $table[2][2]

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

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

問題

次の 3×3 の 2 次元配列が与えられています。

$table = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];

2 行目 (添字 1) の 3 要素を 1 行ずつ順に出力してください。

期待される出力:

4
5
6

ヒント

  • 2 行目は添字 1
  • $table[1][0], $table[1][1], $table[1][2] を 1 行ずつ出力

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

演習問題(2問)

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

    README.md starter.php answer.php

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

    README.md starter.php answer.php

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

完了にすると進捗に反映されます