php

「$user[‘name’]って何?」PHPの配列を初心者向けに図解|まずは箱が並んでいると思えばOK

PHPを触っていると、突然こんなコードが出てきます。

$user['name']

あるいは、

$data['email']

さらに、

$users[0]['name']

……急にカッコが増えた。

$user は変数なのは分かる。
でも ['name'] って何?

今回はここをやります。

実はこれ、PHPではものすごくよく使う**「配列(array)」**です。

フォーム、データベース、APIなどを扱うようになると、ほぼ確実に登場します。

でも最初は難しく考えなくて大丈夫。

「ひとつの変数の中に、複数のデータを入れられる」

まずはこれだけ分かればOKです。


普通の変数は「箱ひとつ」

これまで使ってきた変数は、こんな形でした。

$name = 'みのり';

イメージすると、

$name
└─ みのり

という箱です。

年齢も保存したければ、

$name = 'みのり';
$age = 18;

となります。

$name → みのり
$age  → 18

もちろんこれでも問題ありません。

でもデータが増えてくると、

$name = 'みのり';
$age = 18;
$job = '大学生';
$favorite = 'ココア';

どんどん変数が増えていきます。

そこで登場するのが配列です。


配列ならひとつにまとめられる

同じデータを配列にすると、こう書けます。

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

一気に難しく見えますね。

でも、やっていることは単純です。

$user
├─ name     → みのり
├─ age      → 18
├─ job      → 大学生
└─ favorite → ココア

つまり、

「$userという大きな箱の中に、小さな箱を作った」

くらいに考えてください。


=> は「この名前に、この値」

ここで初めて見るのが、

=>

です。

例えば、

'name' => 'みのり'

なら、

name → みのり

という対応を作っています。

同じように、

'age' => 18

なら、

age → 18

です。

この左側をキー(key)、右側を**値(value)**と呼びます。

'name'  =>  'みのり'
  ↑           ↑
 キー         値

名前は覚えておいて損はありません。

エラーでも頻繁に出てくるからです。


配列から「みのり」だけ取り出す

では、

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

この中から名前だけ表示してみます。

echo $user['name'];

結果は、

みのり

です。

つまり、

$user['name']

は、

$user の中にある name というデータをください

という意味です。

年齢なら、

echo $user['age'];

結果は、

18

になります。


ここで「Undefined array key」がつながる

以前の記事で出てきた、

Undefined array key

も、ここまで分かると意味が見えてきます。

例えば、

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

なのに、

echo $user['email'];

と書いたらどうなるでしょう。

email はありません。

$user
├─ name
├─ age
└─ email ← ない!

だからPHPが、

そんなキーありませんよ!

と教えてくれる。

それが、

Undefined array key "email"

です。

エラーの意味が急に分かりやすくなりましたね。


数字で管理する配列もある

こんな書き方もできます。

$fruits = [
    'りんご',
    'みかん',
    'バナナ'
];

この場合はPHPが自動的に番号を付けます。

0 → りんご
1 → みかん
2 → バナナ

重要なのは、

最初が0

ということ。

最初の「りんご」を表示するなら、

echo $fruits[0];

です。

2番目なら、

echo $fruits[1];

です。

初心者のころ、

1個目なのになんで [0] なんだ!

となりやすいところです。

これはPHPだけではなく、多くのプログラミング言語で登場します。


配列の中に配列も入る

そして、実際のPHPではこれが非常によく出ます。

$users = [
    [
        'name' => 'みのり',
        'age' => 18
    ],
    [
        'name' => 'アリス',
        'age' => 16
    ]
];

見た瞬間、

カッコが多い!

となります。

分解しましょう。

$users

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

[1]
├─ name → アリス
└─ age  → 16

こうなっています。

では、アリスの名前を取り出すなら、

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

です。

順番に読むと簡単です。

$users
 ↓
[1]
 ↓
['name']

つまり、

$users の
1番に入っているデータの
name

です。

結果は、

アリス

になります。


だからDBの結果がこんな形になる

データベースから複数のユーザーを取得すると、よくこんなデータになります。

$users = [
    [
        'id' => 1,
        'name' => 'みのり'
    ],
    [
        'id' => 2,
        'name' => 'アリス'
    ]
];

これを、

foreach ($users as $user) {
    echo $user['name'];
}

のように処理します。

ここでまた知らないものが出ました。

foreach

です。

でも今はまだ覚えなくてOK。

次に配列を扱うとき、

「配列の中身を順番に取り出したい」

という問題が出てきます。

そのときに foreach が登場します。


AIが書いたコードでも配列は大量に出てくる

AIにPHPを書いてもらうと、

$config['url']
$result['data']
$user['id']
$response['message']

のようなコードが大量に出てきます。

以前なら、

この ['xxx'] は何だ?

となっていたかもしれません。

でも、もう読めます。

$user['id']

なら、

$user の中の id

です。

$response['message']

なら、

$response の中の message

です。

これだけでもAIが書いたPHPを読む力がかなり上がります。


困ったら print_r() で中身を見る

配列を扱うときに、とても便利なのが、

print_r();

です。

例えば、

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

print_r($user);

実行すると、中身を確認できます。

Array
(
    [name] => みのり
    [age] => 18
)

つまり、

この変数の中、どうなってるの?

と思ったら、

print_r($user);

してみる。

これは初心者のうちから使って大丈夫です。

むしろ、かなり役に立ちます。


まとめ

今回はPHPの**配列(array)**について見てきました。

最初から全部覚える必要はありません。

まずは、

$user['name']

を見たときに、

$user の中にある name

と読めれば十分です。

そして、

$users[0]['name']

なら、

$users の0番目にあるデータの name

です。

配列が分かるようになると、PHPのコードはかなり読みやすくなります。

そして次に出てくる疑問は、おそらくこれです。

foreach ($users as $user)

foreachって何してるの?

次回は、配列とセットで使われることの多い foreach を、**「名簿を上から1人ずつ見ていく」**くらいの感覚から解説していきましょう。

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

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

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

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