php

「$users[0][‘name’]って何?」PHPの配列を読めるようになろう

AIにPHPを書いてもらったら、こんなコードが出てきました。

echo $users[0]['name'];

……なんだこれ。

$users という変数なのは分かる。

でも、

[0]

が付いて、

さらに、

['name']

まで付いている。

カッコが多い!

ところが、この書き方はPHPで非常によく登場します。

特に、

  • データベースから取得したデータ
  • フォームの複数データ
  • APIから取得したデータ
  • JSONをPHPで扱うとき
  • AIが生成したPHP

などでは避けて通れません。

今回は、そんな**PHPの「配列」**を調査してみましょう。

今日のゴールは、

$users[0]['name']

を見たときに、

「ああ、そういうことね」

と読めるようになることです。


1. 事件発生!変数だらけになった

例えば、好きな食べ物を3つ保存したいとします。

これまで習った変数を使えば、

$food1 = 'カレー';
$food2 = 'ラーメン';
$food3 = '寿司';

と書けます。

3つくらいなら問題ありません。

でも、100個あったらどうでしょう。

$food1 = 'カレー';
$food2 = 'ラーメン';
$food3 = '寿司';
$food4 = 'うどん';
$food5 = 'そば';

// まだまだ続く……

これは大変です。

そこでPHPには、

複数の値をひとまとめにする仕組み

があります。

それが、

配列(array)

です。


2. 配列を作ってみよう

先ほどの食べ物を配列にすると、

$foods = [
    'カレー',
    'ラーメン',
    '寿司'
];

となります。

$foods という1つの変数の中に、

カレー
ラーメン
寿司

という3つの値が入っています。

イメージとしては、

$foods
 ├─ カレー
 ├─ ラーメン
 └─ 寿司

です。

つまり配列とは、

「複数のデータをまとめて入れられる箱」

くらいに考えておけばOKです。


3. 配列の中から1つだけ取り出す

では、「カレー」だけ表示してみましょう。

こう書きます。

echo $foods[0];

結果は、

カレー

です。

次は、

echo $foods[1];

結果は、

ラーメン

そして、

echo $foods[2];

なら、

寿司

です。

ここで重要なのが、

PHPの配列は基本的に0から数え始める

ということです。

[0] → カレー
[1] → ラーメン
[2] → 寿司

1番目なのに [0]。

最初はかなり違和感があります。

でもプログラミングではよくある考え方なので、

「最初は0」

と覚えておきましょう。


4. 名前を付けて保存することもできる

PHPの配列には、もうひとつ非常によく使う形があります。

例えば、ユーザーの情報です。

$user = [
    'name' => 'みのり',
    'age' => 18,
    'favorite' => 'ココア'
];

前に勉強した、

=>

が出てきました。

覚えていますか?

=> は、

キーと値を関連付ける

ときに使います。

例えば、

'name' => 'みのり'

なら、

name → みのり

という組み合わせです。

そのため、

echo $user['name'];

と書けば、

みのり

が表示されます。

同じように、

echo $user['age'];

なら、

18

です。

これを連想配列と呼びます。

名前は少し難しいですが、

「番号ではなく、名前を付けて値を管理できる配列」

と考えれば十分です。


5. 前に習った「=>」とつながった!

以前の記事で、

->

と、

=>

の違いを勉強しました。

そのとき、

$user = [
    'name' => 'みのり'
];

のようなコードを見ましたね。

今回、その意味がさらに分かるようになりました。

'name' => 'みのり'

で保存して、

$user['name']

で取り出す。

つまり、

$user = [
    'name' => 'みのり'
];

echo $user['name'];

という一連の流れになります。

PHPの知識が少しずつつながってきました。


6. いよいよ $users[0]['name'] を解読する

では今回の本題です。

AIがこんなコードを書きました。

$users = [
    [
        'name' => 'みのり',
        'age' => 18
    ],
    [
        'name' => '田中',
        'age' => 25
    ],
    [
        'name' => '佐藤',
        'age' => 32
    ]
];

急に難しく見えますね。

でも、分解すれば簡単です。

まず $users の中には、3人分のデータがあります。

$users

[0]
 ├─ name → みのり
 └─ age  → 18

[1]
 ├─ name → 田中
 └─ age  → 25

[2]
 ├─ name → 佐藤
 └─ age  → 32

では、

$users[0]

は何でしょう。

0番目なので、

みのりのデータ全部

です。

そして、

$users[0]['name']

なら、

まず、

$users[0]

で「0番目の人」を選び、

その中から、

['name']

を取り出します。

つまり、

echo $users[0]['name'];

結果は、

みのり

です。


7. 左から順番に読むと簡単

こういうコードは、左から順番に読んでみましょう。

$users[1]['name']

まず、

$users

ユーザー一覧。

次に、

[1]

1番のユーザー。

最後に、

['name']

そのユーザーの名前。

つまり、

「ユーザー一覧 → 1番 → 名前」

です。

結果は、

田中

ですね。

では、

$users[2]['age']

なら?

「ユーザー一覧 → 2番 → 年齢」

なので、

32

です。

カッコの数に驚かず、左から順番に絞り込んでいくのがコツです。


8. データベースでも似たものを見る

PHPでデータベースを扱うようになると、複数のデータをまとめて取得することがあります。

例えばイメージとして、

$users = [
    [
        'id' => 1,
        'name' => '山田'
    ],
    [
        'id' => 2,
        'name' => '田中'
    ]
];

のようなデータが返ってくることがあります。

そのため、

$users[0]['name']

のようなコードが頻繁に登場します。

さらにフレームワークや取得方法によっては、

$users[0]->name

のようになる場合もあります。

ここで、

「あれ? ['name'] じゃなくて ->name になった!」

となりますね。

でも、これまでの記事を読んでいれば違いに気付けます。

$user['name']

と、

$user->name

では、扱っているデータの形が違います。

この違いも、今後もう少し詳しく扱います。


9. 配列の中身が分からないときは?

AIが書いたPHPを修正していると、

$data['user']['profile']['name']

なんてコードが出てくることがあります。

「もう何が入っているのか分からない!」

そんなときに便利なのが、

var_dump($data);

です。

例えば、

$foods = [
    'カレー',
    'ラーメン',
    '寿司'
];

var_dump($foods);

とすると、配列の中身を確認できます。

開発中に、

「この変数、いったい何が入っているんだ?」

と思ったときには非常に便利です。

AIにコードを直してもらうときにも、

var_dump($data);

の結果を伝えることで、原因を特定しやすくなる場合があります。


10. よく見るエラーも読めるようになる

以前の記事で、

Undefined array key

という警告を扱いました。

今回、ようやくこのエラーの意味がもっとはっきりします。

例えば、

$user = [
    'name' => 'みのり'
];

echo $user['email'];

とします。

でも、この配列には、

'email'

がありません。

あるのは、

'name'

だけです。

そのため、

Undefined array key "email"

のような警告が出ることがあります。

つまり、

「そのキー、配列の中にないよ!」

ということです。

以前はエラー文として覚えたものが、PHPの仕組みとして理解できるようになってきました。


11. AIが書いたコードを読むときのコツ

例えばAIが、

$name = $result['data']['users'][0]['name'];

と書いたとします。

一瞬、かなり難しく見えます。

でも、今回の読み方を使えば、

$result
↓
['data']
↓
['users']
↓
[0]
↓
['name']

と追えます。

つまり、

resultの中のdata → users → 最初のユーザー → name

です。

全部のコードを書けなくてもいい。

でも、

データの中を順番にたどっている

と分かれば、AIが書いたコードを読む力は大きく上がります。


今日の合格ライン

今日覚えて帰ることは、この5つです。

  • 配列は複数の値をまとめて扱える
  • [0] は最初のデータ
  • ['name'] のように名前を使って値を取り出せる
  • $users[0]['name'] は左から順番に読む
  • 中身が分からなければ var_dump() で確認できる

特に、

$users[0]['name']

を見て、

「usersの最初のデータにあるnameね」

と読めれば、今日の授業は合格です。


ワンポイント答え合わせ

Q1. 次の結果は?

$colors = [
    '赤',
    '青',
    '黄色'
];

echo $colors[0];

A. 赤
B. 青
C. 黄色

正解:A

配列は0から数えるので、[0] は最初の「赤」です。


Q2. 次の結果は?

$user = [
    'name' => 'みのり',
    'age' => 18
];

echo $user['name'];

A. name
B. みのり
C. 18

正解:B

name というキーに対応している値は「みのり」です。


Q3. 次のコードは何を取り出している?

$users[1]['email']

A. 最初のユーザーのメールアドレス
B. 2番目のユーザーのメールアドレス
C. 1番目のユーザーの名前

正解:B

PHPでは [0] が最初なので、[1] は2番目のデータです。


AI時代だからこそ、磨こう。その腕。

AIが作るPHPでは、配列が大量に登場します。

データベース、API、フォーム、設定ファイル。

実際のWeb制作では、

$data['users'][0]['name']

のようなコードも珍しくありません。

AIなら、そのコード自体は一瞬で書けます。

だから全部を暗記する必要はありません。

でも、

「このコードは、どのデータを取り出そうとしているのか」

を読めるようになるだけで、エラーが起きたときの見え方は大きく変わります。

1から全部書く必要はない。

だが、知る必要はある。

次回は、この配列と非常に相性のいい、

「同じ処理を何回書くの?」PHPのforeachで配列を順番に処理しよう

へ進みましょう。

$users[0]、$users[1]、$users[2]……と1個ずつ書く必要はありません。

配列が分かった直後だからこそ、foreach がものすごく分かりやすくなります。

☆ この授業をあとで見返す

学生登録(無料)すると、お気に入りに保存できます。授業は登録しなくても読めます。

☆ この授業をあとで見返す

学生登録(無料)すると、お気に入りに保存できます。授業は登録しなくても読めます。