Day 0・Laravelを読むための最低限PHP
配列と連想配列 — Laravelのデータの正体
順番で並べる配列と、キーと値で持つ連想配列。foreachでの繰り返し、多次元配列、[]短縮記法を理解する。
配列とは「たくさんの値をまとめて入れる箱」
変数が「値を1つ入れる箱」なら、配列は「値をいくつも並べて入れられる箱」です。買い物リストのように、複数の値を1つの名前でまとめて持てます。PHPでは配列を角かっこ「[]」で作ります(この「[]」を使う書き方を「短縮記法」と呼びます。昔は array() と書きましたが、今はほぼ [] です)。たとえば「$fruits = ["りんご", "みかん"];」とすると、$fruits[0] が「りんご」になります。番号(添字)が1ではなく0から始まる点に注意してください。
連想配列 — 「キー => 値」で持つ
ここがこのレッスンの主役です。連想配列(れんそうはいれつ)は、値に「番号」ではなく「名前(キー)」を付けて持つ配列です。キーと値は矢印のような記号「=>」で結びます。「name というキーには 田中 という値」という具合です。辞書やラベル付きの引き出しをイメージしてください。
<?php
// 連想配列:キー => 値 の組を並べる
$user = [
"name" => "田中",
"age" => 30,
"admin" => true,
];
echo $user["name"]; // → 田中(キーを指定して値を取り出す)
echo $user["age"]; // → 30なぜ連想配列が超重要なのか
Laravelでは、設定・データベースから取った1件のデータ・フォームで送られてきた入力値・APIのやり取りなど、あらゆる「まとまったデータ」が連想配列(または連想配列のように振る舞うオブジェクト)で表されます。つまり連想配列の「キーで値を取り出す」感覚が分かっていないと、Laravelのコードはほとんど読めません。逆にここさえ掴めば一気に読めるようになります。
foreach — 配列を1個ずつ取り出して繰り返す
配列の中身を1つずつ取り出して処理したいときは「foreach」を使います。読み方は「フォーイーチ」。「配列の要素それぞれについて(for each)、こうする」という意味です。連想配列では「キーと値の両方」を一度に受け取れます。
<?php
$user = ["name" => "田中", "age" => 30];
// $key にキー、$value に値が1組ずつ入り、中の処理が繰り返される
foreach ($user as $key => $value) {
echo "$key は $value です\n";
}
// → name は 田中 です
// → age は 30 です
// 値だけで十分なら $key => は省略できる
$fruits = ["りんご", "みかん"];
foreach ($fruits as $fruit) {
echo $fruit . "\n";
}多次元配列 — 配列の中に配列
配列の要素として、さらに配列を入れることもできます。これを多次元配列と呼びます。たとえば「ユーザーの一覧(=ユーザーという連想配列が複数並んだ配列)」はまさにこの形です。DBから複数件のデータを取ってくると、たいていこの形になり、foreach で1件ずつ取り出して、さらにキーで中の値にアクセスします。
<?php
// 連想配列が3つ並んだ配列(= ユーザー一覧)
$users = [
["name" => "田中", "age" => 30],
["name" => "鈴木", "age" => 25],
["name" => "佐藤", "age" => 40],
];
foreach ($users as $user) {
// $user は1件分の連想配列。キーで中の値を取り出す
echo $user["name"] . "(" . $user["age"] . "歳)\n";
}Laravelではこう出てくる
Laravelのビューに渡すデータや設定ファイルは、まさにこの連想配列です。下は設定ファイル(config)の一部で、「キー => 値」がそのまま使われています。今日の連想配列が読めれば、Laravelの設定も読めます。
<?php
// Laravelの設定ファイル config/app.php の雰囲気
return [
"name" => "My App",
"env" => "production",
"timezone" => "Asia/Tokyo",
"locale" => "ja",
// 「aliases」キーの値はさらに連想配列(多次元)
"aliases" => [
"Route" => "Illuminate\\Support\\Facades\\Route",
"Log" => "Illuminate\\Support\\Facades\\Log",
],
];読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
連想配列でキーと値を結びつけるのに使う記号はどれか。
「$user = ["name" => "田中"];」から「田中」を取り出す正しい書き方はどれか。
なぜ連想配列を理解することがLaravelを読むうえで特に重要なのか説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。