ch08 12章中 8章目

ch08 — 連想配列の中に配列を入れる

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch08 — 連想配列の中に配列を入れる」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch08 — 連想配列の中に配列を入れる」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch08 — 連想配列の中に配列を入れる」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

ここまでは「数値添字 × 数値添字」の 2 次元配列 (純粋な表) を扱ってきたが、実務で出てくるデータの多くは 連想配列の中に配列を入れた 構造になる。$data = ['users' => [...], 'count' => 3] のように、キー (文字列) を使って意味のある名前で内側のデータにたどり着く 形だ。これは JSON / API レスポンス / 設定ファイル の典型構造そのもので、Web 開発を始めるとほぼ毎日触ることになる。

アクセスは $data['users'][0] のように キーと添字を交互にたどる。「'users' で配列を取り出し → その [0] 番目を取り出す」という 2 段階で、ch02 の $table[行][列] と発想は同じ。違うのは「外側が文字列キー、内側が数値添字」のように キーの種類が混在する こと。ネストはさらに深くなることもあり、$data['users'][0]['name'] のように 3 段・4 段とたどる場面も普通に出てくる。

このパターンを読めるかどうかが、JSON を返す API を扱えるかの分水嶺。json_decode($json, true) の戻り値はまさにこの形 (連想配列の入れ子) なので、ch08 で形に慣れておくと外部 API との連携がぐっと楽になる。「外側を文字列キーで開けて、中の数値添字配列を foreach で回す」が一番よく使うパターン。

学習目標

  • $data['users'] = [...] のように連想配列の値に配列を持たせられる
  • $data['users'][0] の形でネストした要素にアクセスできる
  • キー (文字列) と添字 (整数) を交互にたどるイメージを持つ

ドリル

no 内容
01 $data['users'][0] を出力

解説スライド 全 6 枚

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

  1. 連想配列 × 配列

    Lesson 6 / Chapter 8

  2. 連想配列の値に配列を入れられる

    <?php
    $data = [
        'users' => ["太郎", "花子", "次郎"],
        'count' => 3,
    ];
    print_r($data);
    • キー 'users' の値は配列
    • キー 'count' の値は整数
    • 連想配列の各値は 何でも入る (数値・文字列・配列・連想配列...)
  3. ネストした要素にアクセス

    <?php
    $data = [
        'users' => ["太郎", "花子", "次郎"],
        'count' => 3,
    ];
    echo $data['users'][0] . "\n";   // 太郎
    echo $data['users'][1] . "\n";   // 花子
    echo $data['count'] . "\n";      // 3
    • $data['users'] で配列を取り出す
    • そのあと [0] でその配列の 0 番目
    • キー → 添字 → ... と外側から順にたどる
  4. 全部 1 つの式で書ける

    $data['users'][0]

    これは段階的に読むと:

    1. $data['users']["太郎", "花子", "次郎"]
    2. ["太郎", "花子", "次郎"][0]"太郎"

    → 連想配列の中の配列でも、添字アクセスのルールは同じ。

  5. さらにネストもできる

    <?php
    $data = [
        'company' => [
            'name' => "サンプル株式会社",
            'employees' => ["太郎", "花子"],
        ],
    ];
    echo $data['company']['name'] . "\n";          // サンプル株式会社
    echo $data['company']['employees'][0] . "\n";  // 太郎
    • 値にさらに連想配列、その中にまた配列、と何段でもネストできる
    • 多段になるほど読みにくくなるので、必要な深さに留める
  6. このチャプターでできるようになること

    ✅ 連想配列の値に配列を持たせられる ✅ $data['key'][0] で配列の要素を取り出せる ✅ さらに $data['key1']['key2'] のような多段アクセスも書ける ✅ 「外側のキーから順に内側へ」と添字をたどる感覚を持っている

    → ドリルへ

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

Lesson 6 / Chapter 8


連想配列の値に配列を入れられる

<?php
$data = [
    'users' => ["太郎", "花子", "次郎"],
    'count' => 3,
];
print_r($data);
  • キー 'users' の値は配列
  • キー 'count' の値は整数
  • 連想配列の各値は 何でも入る (数値・文字列・配列・連想配列...)

ネストした要素にアクセス

<?php
$data = [
    'users' => ["太郎", "花子", "次郎"],
    'count' => 3,
];
echo $data['users'][0] . "\n";   // 太郎
echo $data['users'][1] . "\n";   // 花子
echo $data['count'] . "\n";      // 3
  • $data['users'] で配列を取り出す
  • そのあと [0] でその配列の 0 番目
  • キー → 添字 → ... と外側から順にたどる

全部 1 つの式で書ける

$data['users'][0]

これは段階的に読むと:

  1. $data['users']["太郎", "花子", "次郎"]
  2. ["太郎", "花子", "次郎"][0]"太郎"

→ 連想配列の中の配列でも、添字アクセスのルールは同じ。


さらにネストもできる

<?php
$data = [
    'company' => [
        'name' => "サンプル株式会社",
        'employees' => ["太郎", "花子"],
    ],
];
echo $data['company']['name'] . "\n";          // サンプル株式会社
echo $data['company']['employees'][0] . "\n";  // 太郎
  • 値にさらに連想配列、その中にまた配列、と何段でもネストできる
  • 多段になるほど読みにくくなるので、必要な深さに留める

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

✅ 連想配列の値に配列を持たせられる ✅ $data['key'][0] で配列の要素を取り出せる ✅ さらに $data['key1']['key2'] のような多段アクセスも書ける ✅ 「外側のキーから順に内側へ」と添字をたどる感覚を持っている

→ ドリルへ

この章で取り組む 演習問題の流れ (1ステップ)
  1. 01 ドリル 01 — 連想配列の中の配列にアクセス README.md starter.php answer.php

演習問題の詳細

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

ドリル 01 — 連想配列の中の配列にアクセス

問題

次のデータが与えられています。

$data = [
    'users' => ["太郎", "花子", "次郎"],
    'count' => 3,
];

$data['users'] の最初の要素 (太郎) を出力してください。

期待される出力:

太郎

ヒント

  • $data['users'] で配列を取り出す
  • そのあと [0] で 0 番目
  • まとめて echo $data['users'][0] . "\n";

🧪 ブラウザで試す

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

PHP ランタイム未読込

          

        

演習問題(1問)

  1. ドリル 01 — 連想配列の中の配列にアクセス

    README.md starter.php answer.php

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

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