PHPの多次元配列(ネスト配列)の使い方をやさしく解説!初心者向けガイド
生徒
「先生、PHPの配列って聞いたことあるんですが、“多次元配列”って何ですか?」
先生
「良い質問ですね。多次元配列とは、配列の中にさらに配列が入っている、いわゆる“入れ子(ネスト)”になった形の配列のことです。」
生徒
「入れ子って、箱の中に箱が入っているみたいな感じですか?」
先生
「まさにその通りです!それじゃあ実際にPHPで多次元配列の使い方を一緒に見ていきましょう!」
1. 多次元配列(ネスト配列)とは?
PHP(ピーエイチピー)でデータをまとめるときによく使うのが「配列」です。そして、「多次元配列」は、配列の中にさらに配列が入っている形のデータ構造です。たとえば、学校のクラスごとに生徒の名前をグループで管理したい場合などに使われます。
以下のように、配列の中に別の配列を入れることで、多次元配列が作れます。
$students = [
"A組" => ["さくら", "たろう", "はなこ"],
"B組" => ["けんた", "みさき", "ゆうじ"]
];
このように、"A組"や"B組"というキーに、それぞれのクラスの生徒をまとめた配列を入れています。
2. 多次元配列の中身を取り出す方法
多次元配列の中身を取り出すには、2つの鍵(キー)を使います。たとえば、A組の2人目の生徒(たろう)を取り出すには、次のように書きます。
echo $students["A組"][1];
[1]は、配列の2番目の要素を意味します(プログラミングでは数を0から数え始めます)。
実行結果は以下のようになります。
たろう
3. foreach文で多次元配列をループ処理する
PHPでは、繰り返し処理をするためにforeach(フォーイーチ)という命令を使います。多次元配列では、foreachを2回ネストして使うことで、すべてのデータを取り出せます。
foreach ($students as $class => $names) {
echo $class . "の生徒一覧:\n";
foreach ($names as $name) {
echo "- " . $name . "\n";
}
}
このコードは、各クラスごとの生徒一覧を順番に表示します。出力は次のようになります。
A組の生徒一覧:
- さくら
- たろう
- はなこ
B組の生徒一覧:
- けんた
- みさき
- ゆうじ
4. 配列の構造を確認するprint_rとvar_dump
プログラムの途中で、配列の中身がどうなっているかを確認したいときは、print_r(プリントアール)やvar_dump(バーダンプ)という命令を使います。
print_rは見やすい形で配列を表示してくれます。
print_r($students);
var_dumpは、変数の型や値をより詳しく教えてくれます。
var_dump($students);
どちらもデバッグ(動作確認)にとても役立つPHPの機能です。
5. 多次元配列のよくある使い道
多次元配列は、次のような場面でよく使われます。
- 表形式のデータを管理するとき(例:テーブル)
- 商品のカテゴリごとの一覧を作るとき
- ユーザー情報(名前・年齢・住所など)をまとめるとき
例えば、以下のように商品をカテゴリごとにまとめることもできます。
$items = [
"飲み物" => [
["name" => "コーラ", "price" => 120],
["name" => "お茶", "price" => 100]
],
"お菓子" => [
["name" => "チョコ", "price" => 150],
["name" => "ポテチ", "price" => 130]
]
];
このようにすれば、カテゴリごとに商品情報を整理して扱いやすくなります。
6. 多次元配列の注意点
多次元配列を使うときは、配列の階層(何重にもなっている構造)に注意しましょう。
間違ったキーを使うと、エラーになったりnull(何もない)が返ってくることがあります。
また、階層が深くなりすぎると、プログラムが読みにくくなるので、整理された構造を意識しましょう。