ch09 12章中 9章目

ch09 — 連想配列の配列 (オブジェクトリスト)

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch09 — 連想配列の配列 (オブジェクトリスト)」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch09 — 連想配列の配列 (オブジェクトリスト)」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch09 — 連想配列の配列 (オブジェクトリスト)」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

[['name' => '太郎', 'age' => 20], ['name' => '花子', 'age' => 22], ...] のように 連想配列を要素として並べた配列 は、実務で最頻出のデータ形だ。1 件 1 件が「ユーザー」「注文」「商品」のような レコード (オブジェクト) で、その並びが「一覧」になる。DB の SELECT 結果・JSON 配列・CSV のヘッダー付きパース結果 はすべてこの形で返ってくる。

この章で身につけたいのは「1 件 = 連想配列、その並び = 添字配列」という構造の読み方。$users[0]['name'] のように「添字でレコードを取り出し → キーでフィールドを取り出す」という 2 段階アクセスができれば、データベース風のデータをすぐ扱えるようになる。これは ch08 (連想配列の中に配列) と キーと添字の順が逆 で、混同しないことが重要。

走査の基本は foreach ($users as $user) { echo $user['name'] . "\n"; }外側 foreach で 1 件ずつレコードを取り出し、内側ではキー (['name'] など) でフィールドを取り出す。レコード数が増えても書き方は変わらない。次章 ch10 ではこの形を 条件検索 に発展させ、ch11 では CSV を ヘッダー付きで この形にパースする方法も扱う。「テーブルの行 = 連想配列、テーブル全体 = 連想配列の配列」のイメージを持っておくと、後の章のデータ構造がすべて繋がって見える。

学習目標

  • [['name' => '太郎', 'age' => 20], ...] の形を読める・書ける
  • DB の検索結果や JSON 一覧でよく出るデータ形式だと知る
  • foreach で 1 件ずつ取り出し、各キーにアクセスできる

ドリル

no 内容
01 users 配列から全員の名前を foreach で出力

解説スライド 全 6 枚

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

  1. 連想配列の配列

    Lesson 6 / Chapter 9

  2. 「1 件 = 連想配列」を並べた形

    <?php
    $users = [
        ['name' => '太郎', 'age' => 20],
        ['name' => '花子', 'age' => 25],
        ['name' => '次郎', 'age' => 18],
    ];
    • 外側 = 普通の配列 (0, 1, 2, ... の添字)
    • 各要素 = 連想配列 (1 人分の情報)
    • DB の検索結果や JSON API のレスポンスでよく出てくる形
  3. $users[0] は連想配列

    print_r($users[0]);

    実行結果:

    Array
    (
        [name] => 太郎
        [age] => 20
    )
    • $users[0] を取り出すと 1 人分の連想配列
    • そこからさらに ['name'] ['age'] でキーアクセス
    • まとめて: $users[0]['name']"太郎"
  4. foreach で 1 件ずつ取り出す

    <?php
    foreach ($users as $user) {
        echo $user['name'] . "\n";
    }

    実行結果:

    太郎
    花子
    次郎
    • $user には 1 件分の連想配列が入る
    • $user['name'] でその件の名前を取り出す
    • これがオブジェクトリスト走査の基本形
  5. 複数のキーを同時に取り出すことも多い

    <?php
    foreach ($users as $user) {
        echo $user['name'] . " (" . $user['age'] . "歳)\n";
    }

    実行結果:

    太郎 (20歳)
    花子 (25歳)
    次郎 (18歳)
    • 「名前と年齢を一覧表示」のような用途
    • 1 件分の $user から複数キーをまとめて使う
  6. このチャプターでできるようになること

    [['name'=>..., 'age'=>...], ...] の形を書ける・読める ✅ $users[0]['name'] でネストアクセスできる ✅ foreach ($users as $user) で 1 件ずつ取り出せる ✅ 複数キーを同時に組み合わせて出力できる

    → ドリルへ

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

Lesson 6 / Chapter 9


「1 件 = 連想配列」を並べた形

<?php
$users = [
    ['name' => '太郎', 'age' => 20],
    ['name' => '花子', 'age' => 25],
    ['name' => '次郎', 'age' => 18],
];
  • 外側 = 普通の配列 (0, 1, 2, ... の添字)
  • 各要素 = 連想配列 (1 人分の情報)
  • DB の検索結果や JSON API のレスポンスでよく出てくる形

$users[0] は連想配列

print_r($users[0]);

実行結果:

Array
(
    [name] => 太郎
    [age] => 20
)
  • $users[0] を取り出すと 1 人分の連想配列
  • そこからさらに ['name'] ['age'] でキーアクセス
  • まとめて: $users[0]['name']"太郎"

foreach で 1 件ずつ取り出す

<?php
foreach ($users as $user) {
    echo $user['name'] . "\n";
}

実行結果:

太郎
花子
次郎
  • $user には 1 件分の連想配列が入る
  • $user['name'] でその件の名前を取り出す
  • これがオブジェクトリスト走査の基本形

複数のキーを同時に取り出すことも多い

<?php
foreach ($users as $user) {
    echo $user['name'] . " (" . $user['age'] . "歳)\n";
}

実行結果:

太郎 (20歳)
花子 (25歳)
次郎 (18歳)
  • 「名前と年齢を一覧表示」のような用途
  • 1 件分の $user から複数キーをまとめて使う

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

[['name'=>..., 'age'=>...], ...] の形を書ける・読める ✅ $users[0]['name'] でネストアクセスできる ✅ foreach ($users as $user) で 1 件ずつ取り出せる ✅ 複数キーを同時に組み合わせて出力できる

→ ドリルへ

この章で取り組む 演習問題の流れ (1ステップ)
  1. 01 ドリル 01 — 全員の名前を出力 README.md starter.php answer.php

演習問題の詳細

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

ドリル 01 — 全員の名前を出力

問題

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

$users = [
    ['name' => '太郎', 'age' => 20],
    ['name' => '花子', 'age' => 25],
    ['name' => '次郎', 'age' => 18],
];

foreach を使って、全員の名前を 1 行ずつ上から順に出力してください。

期待される出力:

太郎
花子
次郎

ヒント

  • foreach ($users as $user) { echo $user['name'] . "\n"; }

🧪 ブラウザで試す

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

PHP ランタイム未読込

          

        

演習問題(1問)

  1. ドリル 01 — 全員の名前を出力

    README.md starter.php answer.php

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

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