連想配列は、値とキーを両方設定できるため、より複雑な表現が可能です。
例えばプルダウンメニューを作る時はvalueにはキーを、表示用には値を別々に設定したり、「みかん => 68円」などといった連番以外のキーを使えるのは魅力ですね。
通常の配列に追加する方法はこちら
目次
連想配列のセット方法
配列に1個ずつセットする
1 2 3 4 5 6 7 |
$cities['kanagawa'] = '横浜'; $cities['osaka'] = '大阪'; $cities['fukuoka'] = '福岡'; echo $cities['kanagawa']; echo $cities['osaka']; echo $cities['fukuoka']; |
横浜 大阪 福岡
キーがkanagawa
の値は横浜
、osaka
は大阪
、fukuoka
は福岡
がセットされています。
通常の配列は$cities[0]、$cities[1]…という風に0番目から自動的に連番が振られますが、連想配列はキー[0]の部分を好きに設定できるので便利です。
ちなみに既にセット済みのキーを使い回すと上書きされてしまうため、注意しましょう。
1 2 3 4 5 6 7 8 |
// 配列に値を格納 $cities['kanagawa'] = '横浜'; // 同じ配列に値を格納 $cities['kanagawa'] = '神奈川'; // 値は上書きされる echo $cities['kanagawa']; |
神奈川
array関数を使い複数の値を一気にセットする
1 2 3 4 5 6 7 8 9 10 |
// array()で複数の値を配列にセット $cities= array ( 'kanagawa' => '横浜', 'osaka' => '大阪', 'fukuoka' => '福岡' ); echo $cities['kanagawa']; echo $cities['osaka']; echo $cities['fukuoka']; |
横浜 大阪 福岡
array()
は以下のようにダブルアロー演算子を使い、キーと値をセットします。
array( キー => 値);
連想配列に値をセットする際はarray関数が便利ですね。
連想配列を1つずつ取り出す便利なforeach関数
上記の例で値を出力する際にechoを連続で使用していますが、あまりスマートな方法ではないでしょう。
配列の中身が1,000個とか1万個だったらどうでしょう?
そんな時はforeach()
を使うことで、繰り返し処理により一気に配列の中身を全部吐き出してくれますので、かなり便利です。
以下で紹介していますので、配列を出力する際は是非使いたいですね。
PHPのforeachを使った配列処理を初心者向けに分かりやすく
値をセットした連想配列にさらに値を追加したい
既にセットした配列に値を追加すると、上書きされてしまうのは1-1でご紹介しましたね。
値をさらに追加する方法を2パターン紹介します。
複合代入演算子「+=」(プラスイコール)で追加する
1 2 3 4 5 |
// 変数に配列を格納する $cities = array('kanagawa'=>'神奈川'); // 同じ変数にさらに配列を挿入する $cities += array('osaka'=>'大阪','fukuoka'=>'福岡'); |
参考:PHPの代入演算子で「=」よりもシンプルに代入する方法
array_merge関数で追加する
1 2 3 4 5 |
// 変数に配列を格納する $cities = array('kanagawa'=>'神奈川'); // array_mergeで同じ変数にさらに配列を挿入する $cities = array_merge($cities, array('osaka'=>'大阪','fukuoka'=>'福岡')); |
上記2パターンだと、既にセットしている値を上書きすることなく追加できました。
ただarray_merge()
でキーを数値にした場合、キーを自動的に振り直してしまうため注意が必要です。
自動採番したくない場合は+
などを使うようにしましょう。
通常の配列に追加する
通常の配列では+
演算子や+=
での代入ができません。
array_merge()
で追加することはできますが、やや冗長に感じられるかもしれません。
通常の配列ではarray_push()
や、[]
(角カッコ)による追加ができるため、これらが一般的です。
詳しくは、以下記事をご参照ください。