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人ずつ見ていく」**くらいの感覚から解説していきましょう。
