『PHP基礎講座⑤』では、配列と連想配列について解説していきます。
配列とは
配列を使うと、1つの変数に2つ以上の値を入れることができます。
以下のように、基本的に変数は1つしか値を入れることはできません。
<?php
$name1 = "John";
$name2 = "Maria";
$name3 = "Daniel";
?>
そこで、配列[]
を使うことで
以下のように1つの変数に2つ以上の値を定義することができます。
<?php
$names = ["John", "Maria", "Daniel"];
?>
では、次は『配列の使い方』を詳しく解説します。
配列の使い方
配列の定義の仕方
配列を定義するときは以下のように[]
を使います。
<?php
$変数名 = [値①, 値②, 値③...];
?>
では、この構文を使って以下の表の内容を配列として定義します。
変数名 | 0 | 1 | 2 |
---|---|---|---|
$names | John | Maria | Daniel |
配列として定義すると以下のようになります。
<?php
$names = ["John", "Maria", "Daniel"];
?>
このように[]
を使うことで、2つ以上の値を1つの変数にまとめて定義することができます。
これだけの値を配列を使わずに定義すると、3つの変数が必要になりますが、
配列[]
を使うことで変数1つだけで済むのは便利ですね。
では、続いては『配列の出力方法』について解説していきます。
配列の出力方法
配列の値を使うときは、以下のように$変数名[番号]
という形で使います。
<?php
echo $変数名[0];
echo $変数名[1];
echo $変数名[2];
...
?>
配列の値は、0から順に番号が振り分けられています。
では、実際に上記の構文を使って配列の値を出力してみましょう。
今回出力する値は、『配列の定義の仕方』で解説した以下の配列の値です。
<?php
$names = ["John", "Maria", "Daniel"];
?>
0番目にJohn
、1番目にMaria
、2番目にDaniel
となっています。
配列の値を出力するときは以下のように書きます。
<?php
echo $names[0]; //出力結果:John
echo $names[1]; //出力結果:Maria
echo $names[2]; //出力結果:Daniel
?>
連想配列とは
連想配列を使うと、以下のように配列の中のそれぞれの値に名前をつけて管理することができます。
<?php
$book_info = [
"作者" => "夏目漱石",
"タイトル" => "吾輩は猫である",
"出版年" => 1905,
"ジャンル" => "文学"
];
?>
では、次は『連想配列の使い方』を詳しく解説します。
連想配列の使い方
連想配列の定義の仕方
以下のように配列の値は、値の名前 => 値
とすることで名前をつけることができます。そして、値に名前がついている配列のことを『連想配列』と言います。
<?php
$変数名 = [
値の名前① => 値①,
値の名前② => 値②,
値の名前③ => 値③,
....
];
?>
では、この構文を使って以下の表の内容を連想配列として定義します。
変数名 | 作者 | タイトル | 出版年 | ジャンル |
---|---|---|---|---|
$book_info | 夏目漱石 | 吾輩は猫である | 1905 | 文学 |
連想配列として定義すると以下のようになります。
<?php
// 本を表す連想配列
$book_info = [
"作者" => "夏目漱石",
"タイトル" => "吾輩は猫である",
"出版年" => 1905,
"ジャンル" => "文学"
];
?>
通常の配列では、それぞれの値がどういう意味を持つか分かりにくいですが、
連想配列にすることで、それぞれの値に名前がついているので管理しやすくなります。
「なぜ名前をつけただけで管理しやすくなるの?」と疑問に思った方もいるかもしれないので、
続いて、『連想配列の出力方法』について解説していきます。
連想配列の出力方法
連想配列の値を使うときは、以下のように$変数名[値の名前]
という形で使います。
<?php
echo $変数名[値の名前];
?>
では、実際に上記の構文を使って連想配列の値を出力してみましょう。
今回出力する値は、『連想配列の定義の仕方』で解説した以下の連想配列の値です。
<?php
//本を表す連想配列
$book_info = [
"作者" => "夏目漱石",
"タイトル" => "吾輩は猫である",
"出版年" => 1905,
"ジャンル" => "文学"
];
?>
連想配列を使っているので、それぞれの値がどういう意味を持つかが分かりやすいですね。
連想配列の値を出力するときは以下のように書きます。
<?php
$book_info = [
"作者" => "夏目漱石",
"タイトル" => "吾輩は猫である",
"出版年" => 1905,
"ジャンル" => "文学"
];
echo $book_info["タイトル"]; //出力結果:吾輩は猫である
?>
通常の配列だと、本のタイトルを出力したくても、番号で指定することしかできないので「どの番号が本のタイトルだったかな?」と迷ってしまいますが、
連想配列は、それぞれの値に名前をつけているので、値を出力するときの迷いがなくなります。
配列と連想配列はこう覚えればOK
<?php
echo "『吾輩は猫である』は夏目漱石の作品だ";
echo "『吾輩は猫である』は文学の作品だ";
?>
同じ値を何度も入力するのは手間だな…。
本の情報を変数にして、簡単に使い回せるようにしよう!
<?php
$book_author = "夏目漱石";
$book_title = "吾輩は猫である";
$book_year = 1905;
$book_genre = "文学";
echo "『".$book_title."』は".$book_author."の作品だ"; // 出力結果:『吾輩は猫である』は夏目漱石の作品だ
echo "『".$book_title."』のジャンルは".$book_genre."だ"; // 出力結果:『吾輩は猫である』のジャンルは文学だ
?>
でも、変数だけだと複数の値が管理しづらいな…。
なら、配列を使って1つの変数にまとめよう!
<?php
$book_info = [
"夏目漱石",
"吾輩は猫である",
1905,
"文学"
];
echo "『".$book_info[1]."』は".$book_info[0]."の作品だ"; // 出力結果:『吾輩は猫である』は夏目漱石の作品だ
echo "『".$book_info[1]."』のジャンルは".$book_info[3]."だ"; // 出力結果:『吾輩は猫である』のジャンルは文学だ
?>
でも、番号だと出力するときに何の値か分かりにくくて不便だな…。
なら、それぞれの値に名前をつけて管理しよう!
<?php
$book_info = [
"作者" => "夏目漱石",
"タイトル" => "吾輩は猫である",
"出版年" => 1905,
"ジャンル" => "文学"
];
echo "『".$book_info["タイトル"]."』は".$book_info["作者"]."の作品だ"; // 出力結果:『吾輩は猫である』は夏目漱石の作品だ
echo "『".$book_info["タイトル"]."』のジャンルは".$book_info["ジャンル"]."だ"; // 出力結果:『吾輩は猫である』のジャンルは文学だ
?>
連想配列の値を連想配列にする
連想配列を応用すると、以下のように連想配列の値をさらに連想配列にすることができます。
<?php
$変数名 = [
値の名前 => [
値の名前① => 値①,
値の名前② => 値②,
値の名前③ => 値③,
....
]
];
?>
では、この構文を使って以下の表の内容を連想配列として定義します。
関係 | 名前 | 年齢 | 職業 | 学年 |
---|---|---|---|---|
父 | 山田太郎 | 45 | 会社員 | |
母 | 山田花子 | 42 | 主婦 | |
子供 | 山田一郎 | 12 | 小学6年生 |
連想配列として定義すると以下のようになります。
<?php
$family = [
"父" => [
"名前" => "山田太郎",
"年齢" => 45,
"職業" => "会社員",
],
"母" => [
"名前" => "山田花子",
"年齢" => 42,
"職業" => "主婦",
],
"子供" => [
"名前" => "山田一郎",
"年齢" => 12,
"学年" => "小学6年生",
],
];
?>
連想配列の中に連想配列があると難しく感じますが、
より多くの値を1つの変数の中で管理できる書き方だと捉えてもらえればOKです!
さらに、こちらの値を出力するときは以下のような書き方をします。
<?php
echo $変数名[値の名前][値の名前];
?>
「値の名前が連続するってどういうことだろう?」って思った方がいると思うので、
こちらの構文で先ほどの連想配列の値を出力すると以下のようになります。
<?php
$family = [
"父" => [
"名前" => "山田太郎",
"年齢" => 45,
"職業" => "会社員",
],
"母" => [
"名前" => "山田花子",
"年齢" => 42,
"職業" => "主婦",
],
"子供" => [
"名前" => "山田一郎",
"年齢" => 12,
"学年" => "小学6年生",
],
];
echo $family["子供"]["学年"]; // 出力結果:小学6年生
?>
【補足】array()を使った配列と連想配列を定義する方法
今回は配列を定義するときに[]
を使用しましたが、以下のようにarray()
を使って書くこともできます。
<?php
// 配列
$names = array("John", "Maria", "Daniel");
// 連想配列
$book_info = array(
"作者" => "夏目漱石",
"タイトル" => "吾輩は猫である",
"出版年" => 1905,
"ジャンル" => "文学"
);
?>
array()
、[]
のどちらを使って配列を定義しても同じ意味になります。
ただ、[]
を使った書き方のほうが新しい書き方となります。実際の案件では、昔に作られたサイトでarray()
が使われていることがあるので、どちらの書き方も頭に入れておくようにしましょう。
今後、array()
の書き方がPHPの文法として非推奨になるかもしれないので、
これから新たにサイトを作る場合は、[]
を使って配列を定義するようにしましょう。
まとめ
配列の定義の仕方
配列は[]
を使って定義します。
// 基本の構文
<?php
$変数名 = [値①, 値②, 値③...];
?>
// 具体例
<?php
$names = ["John", "Maria", "Daniel"];
?>
配列の出力方法
$変数名[番号]
と書くと、配列の値を使うことができます。
// 基本の構文
<?php
echo $変数名[0];
echo $変数名[1];
echo $変数名[2];
...
?>
// 具体例
<?php
echo $names[0]; //出力結果:John
echo $names[1]; //出力結果:Maria
echo $names[2]; //出力結果:Daniel
?>
連想配列の定義の仕方
配列の値は、値の名前 => 値
とすることで名前をつけることができます。そして、値に名前がついている配列のことを『連想配列』と言います。
// 基本の構文
<?php
$変数名 = [
値の名前① => 値①,
値の名前② => 値②,
値の名前③ => 値③,
....
];
?>
// 具体例
<?php
// 本を表す連想配列
$book_info = [
"作者" => "夏目漱石",
"タイトル" => "吾輩は猫である",
"出版年" => 1905,
"ジャンル" => "文学"
];
?>
連想配列の出力方法
$変数名[値の名前]
と書くと、連想配列の値を使うことができます。
// 基本の構文
<?php
echo $変数名[値の名前];
?>
// 具体例
<?php
$book_info = [
"作者" => "夏目漱石",
"タイトル" => "吾輩は猫である",
"出版年" => 1905,
"ジャンル" => "文学"
];
echo $book_info["タイトル"]; //出力結果:吾輩は猫である
?>
連想配列の値を連想配列にする
連想配列を応用すると、連想配列の値をさらに連想配列にすることができます。
// 基本の構文
<?php
$変数名 = [
値の名前 => [
値の名前① => 値①,
値の名前② => 値②,
値の名前③ => 値③,
....
]
];
?>
// 具体例
<?php
$family = [
"父" => [
"名前" => "山田太郎",
"年齢" => 45,
"職業" => "会社員",
],
"母" => [
"名前" => "山田花子",
"年齢" => 42,
"職業" => "主婦",
],
"子供" => [
"名前" => "山田一郎",
"年齢" => 12,
"学年" => "小学6年生",
],
];
?>
連想配列の値の連想配列の出力方法
$変数名[値の名前][値の名前]
と書くと、連想配列の値の連想配列を使うことができます。
// 基本の構文
<?php
echo $変数名[値の名前][値の名前];
?>
// 具体例
<?php
$family = [
"父" => [
"名前" => "山田太郎",
"年齢" => 45,
"職業" => "会社員",
],
"母" => [
"名前" => "山田花子",
"年齢" => 42,
"職業" => "主婦",
],
"子供" => [
"名前" => "山田一郎",
"年齢" => 12,
"学年" => "小学6年生",
],
];
echo $family["子供"]["学年"]; // 出力結果:小学6年生
?>
array()を使って配列を定義する方法
古い書き方ですが、配列はarray()
を使って定義することができます。
// 基本の構文
<?php
$変数名 = array(値①, 値②, 値③...);
?>
// 具体例
<?php
$names = array("John", "Maria", "Daniel");
?>
array()を使って連想配列を定義する方法
古い書き方ですが、連想配列はarray()
を使って定義することができます。
// 基本の構文
<?php
$変数名 = array(
値の名前① => 値①,
値の名前② => 値②,
値の名前③ => 値③,
....
);
?>
// 具体例
<?php
$book_info = array(
"作者" => "夏目漱石",
"タイトル" => "吾輩は猫である",
"出版年" => 1905,
"ジャンル" => "文学"
);
?>