# ch01 — 連想配列を作る

Source: https://php-school.pages.dev/topics/array-assoc/ch01-assoc-basic/
Site: AIと学ぶPHPの学校 (https://php-school.pages.dev)
Lesson: 連想配列
Level: L2

Reference (official): https://www.php.net/manual/ja/language.types.array.php

## 本文

# ch01 — 連想配列を作る

## 概要

**連想配列** は「キーと値をペアで持つ配列」のこと。`['name' => '太郎', 'age' => 20]` のように、`キー => 値` の形でデータを並べる。`['太郎', 20]` のような添字配列 (0, 1, 2... の数字で要素を取り出す) と違って、`$user['name']` のように **意味のあるキー** で値にアクセスできるのが特徴で、データに「ラベル」を貼って扱いたい時に使う。

ポイントは、PHP では添字配列と連想配列が **同じ `array` 型として扱われる** こと。数字キーと文字列キーを 1 つの配列に混ぜることもできる (ただし実務ではあまり推奨されない)。多くの言語では「配列」と「辞書 (dict / map / hash)」が別物だが、PHP ではどちらも `array` の 1 機能として統一されている。この特殊性が、後の章で foreach やソートを学ぶ時に「どっちの配列でも同じ書き方で動く」というメリットにつながる。

この章ではまず **連想配列を作る** ところから始める。`=>` (アロー) でキーと値を結びつける構文を体に入れて、`$arr['key']` で値を取り出す感覚を掴むのが目標。標準入力からキーと値を読み込んでその場で連想配列を組み立てるドリル 03 まで進めば、後続の追加・走査・ソートに必要な土台が揃う。

## 学習目標

- キーと値をペアで持つ「連想配列」が書ける
- `['name' => '太郎']` の `=>` の意味を言える
- `$arr['name']` でキーを指定して値を取り出せる

## 所要時間

スライド 4 分 + ドリル 3 問 = **15 分**

## ドリル

| no | 内容 |
|---|---|
| 01 | `name => 太郎` だけの連想配列を作って値を出力 |
| 02 | `name / age / city` の 3 キーを持つ連想配列を出力 |
| 03 | 標準入力から `key=値` の形式を 2 行読んで連想配列を組む |

## 採点

```bash
php scripts/grade.php topics/array-assoc/ch01-assoc-basic/drill/01-single-pair/
```

## 関連チャプター

- [`ch02-assoc-modify`](../ch02-assoc-modify/) — 作った連想配列に追加・上書き・削除を行う次の章
- [`ch03-foreach-value`](../ch03-foreach-value/) — 連想配列を foreach で走査する
- [`ch04-foreach-key-value`](../ch04-foreach-key-value/) — キーと値を同時に取り出す

## スライド

---
marp: true
theme: dojo
paginate: true
size: 16:9
---

<!--
LLM_CONTEXT:
  Lesson 5 / Chapter 1
  目的: 連想配列 ['key' => 値] を作り、$arr['key'] で値を取り出せるようにする
  扱わない: 追加・上書き (ch02) / foreach (ch03,ch04) / 並び替え (ch06,ch07) / 検索 (ch08) / 多次元 (L6)
  読み上げ時間目安: 3 分半〜4 分
-->

# 連想配列を作る

Lesson 5 / Chapter 1

---

## 添字配列だけだと「何の値か」が分かりにくい

```php
<?php
$person = ["太郎", 20, "東京"];
echo $person[0]; // 太郎
echo $person[1]; // 20
echo $person[2]; // 東京
```

- `[0]` が名前、`[1]` が年齢…と覚えるのは大変
- **連想配列** なら「名前」「年齢」「都市」のように **キー** を付けられる

---

## `'キー' => 値` で連想配列を作る

```php
<?php
$person = [
    'name' => '太郎',
    'age'  => 20,
];
print_r($person);
```

実行結果:

```
Array
(
    [name] => 太郎
    [age] => 20
)
```

- `=>` の左が **キー**、右が **値**
- キーは文字列で書くのが基本

---

## `$arr['キー']` で値を取り出す

```php
<?php
$person = [
    'name' => '太郎',
    'age'  => 20,
];

echo $person['name'] . "\n"; // 太郎
echo $person['age'] . "\n";  // 20
```

- 添字配列の `$nums[0]` と同じ感覚で、添字の代わりにキーを書く
- 存在しないキーを指定すると `Warning` が出る

---

## 改行を入れて読みやすく書ける

```php
<?php
$person = [
    'name' => '太郎',
    'age'  => 20,
    'city' => '東京',
];
```

- 1 つのキーずつ改行
- 末尾の要素にも `,` を付けてよい (PHP では推奨)
- `=>` の位置を揃えると見やすい

---

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

✅ `['key' => 値]` で連想配列を作れる
✅ `$arr['key']` で値を取り出せる
✅ `print_r` で中身を確認できる
✅ 複数キーを改行で並べて書ける

→ ドリルへ
