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