【PHP基礎】変数と配列③
前回記事で紹介した、配列のインデックスを、
文字列の名前(キー)に置き換えたものを、
連想配列と呼びます(前回記事: 配列とは)。
連想配列
連想配列とは、配列のインデックスを、
文字列のキーに置き換えたものです。
配列と違って、
各値の意味を、キーとして明示することができます。
定義するときは、array()の()の中、または[]の中に、
キー => 値のペアを、カンマ区切りで書いていきます。
また、1つずつキーと値を追加していく方法もあります。
連想配列の定義例
// もっとも古くからある方法 $dict1 = array("name" => "A", "age" => 33); // array()でなく[]で挟むのでコーディングが短く済む $dict2 = ["name" => "A", "age" => 33]; // 1つずつ要素を追加するので動的に連想配列を作成するとき用いる $dict3["name"] = "A"; $dict3["age"] = 33;
配列の要素
通常の配列のインデックスにあたるものがキーなので、連想配列の場合はキーを指定して要素を取得します。
<?php $product = [ "name" => "ペン", "price" => 100, "color" => "黒", ]; echo $product["name"]; ?>
表示結果:ペン
※列挙する際にカンマで終わっていてもOKです
連想配列とfor文
前回記事で、配列はfor文と組み合わせて使用されることを説明しました(参考: for文とは)。
理由はfor文でインクリメントされる変数と、配列のインデックスがうまく紐づくからです。
しかし、連想配列は通常の配列と異なり、インデックスではなくキーで管理されています。
そのため通常のfor文では値をまとめて取得することができません。
代わりに、次のセクションで示すように、foreach文を使います。
連想配列とforeach文
連想配列にはforeach文を使います(参考: foreach文とは)。
foreach文の詳細は、上記の記事をご覧ください。
ここでは、そのような構文があり、連想配列とセットになることだけ押さえてください。
<?php $product = [ "name" => "ペン", "price" => 100, "color" => "黒", ]; foreach($product as $key => $value){ echo $key." ".$value.","; } ?>
表示結果:name ペン, price 100, color 黒,
カスタムインデックス配列と混合配列
PHPでは、典型的な配列と、典型的な連想配列の中間のデータ構造を定義できます。
1つ目がカスタムインデックス配列。
2つ目が混合キー配列です。
カスタムインデックス配列
例えば、地下一階や地下2階といった概念を表す際、
PHPの通常の配列では、インデックスが0始まりなので表現できません。
そのため、カスタムインデックス配列を用います。
<?php $stairs = [ -1 => "B1", 1 => "GF", 2 => "2F" ]; foreach($stairs as $key => $value){ echo $key.":".$value."</br>"; } ?>
表示結果:
-1:B1
1:GF
2:2F
混合キー配列
数値と文字列の双方をキーとして用いる配列です。
<?php $data = [ 1 => "A", "B" => "B", 3 => "C" ]; foreach($data as $key => $value){ echo $key.":".$value."</br>"; } ?>
表示結果:
1:A
B:B
3:C