連想配列(文字列をキーにした配列)を使おう
前回のコラムでは、数値をキーにした配列を学びました。
今回は数値ではなく文字列をキーにした連想配列を学んでいきましょう。
「連想配列」という仰々しい名前がつけられていますが、別段難しいことはなく普通の配列のときと変わりありません。
このブログもそうですが、ブログシステムを作成するときにはこの連想配列が欠かせませんので、じっくり練習して理解を深めてください。
目次 Table of Contents
PHPの連想配列の作成方法
PHPの通常の配列は、配列の要素に0、1、2・・・と順番にキー番号が振られるものでした。
一方連想配列は、キーに好きな文字列を割り当てることができます。
こちらも言葉で説明するよりも、実際に書いた方がわかりやすいので、以下に例を示します。
$fruits = array();
$fruits = array(
'apple' => 'りんご',
'orange' => 'オレンジ',
'grape' => 'ぶどう',
'pineapple' => 'パイナップル',
);
print_r($fruits);
//コード2
$animals = array();
$animals['dog'] = 'イヌ';
$animals['cat'] = 'ネコ';
$animals['mouse'] = 'ネズミ';
$animals['hippopotamus'] = 'カバ';
print_r($animals);
//コード3
echo '庭の'.$fruits['grape'].'がようやく実をつけた';
echo '一番好きな動物は'.$animals['hippopotamus'].'です';
Array ( [apple] => りんご [orange] => オレンジ [grape] => ぶどう [pineapple] => パイナップル )
//コード2
Array ( [dog] => イヌ [cat] => ネコ [mouse] => ネズミ [hippopotamus] => カバ )
//コード3
庭のぶどうがようやく実をつけた
一番好きな動物はカバです
連想配列も通常の配列と書き方は同じです。
コード1、もしくはコード2のような書き方で値の代入をします。
連想配列の任意の要素を出力したいときは、コード3のように 変数名['キー'] という形にします。
キーが文字列になりますので、''で囲むのを忘れないようにしてください。
連想配列を展開する
連想配列のすべての要素を展開してみましょう。
通常の配列のように番号で管理されていないので、ほとんどの場合foreachによる展開になります。
foreach($fruits as $key => $value){
echo $key.'-'.$value.'<br />';
}
orange-オレンジ
grape-ぶどう
pineapple-パイナップル
「連想」配列という名前にあるように、キーと値を結びつけて展開することが多いです。
foreach構文を使うことで配列内のすべての要素を展開することができます。
配列を結合する(配列で使える便利な関数)
配列関連の関数はいろいろありますが、よく使うものをご紹介します。
array_merge()関数は、複数の配列同士を結合して一つの配列にまとめる関数です。
ここでは前項で作成した連想配列$fruits、$animalsを結合してみます。
$translation = array();
$translation = array_merge($fruits,$animals);
print_r($translation);
//コード6
$honyaku = array();
$honyaku = $fruits + $animals;
print_r($honyaku);
Array ( [apple] => りんご [orange] => オレンジ [grape] => ぶどう [pineapple] => パイナップル [dog] => イヌ [cat] => ネコ [mouse] => ネズミ [hippopotamus] => カバ )
//コード6
Array ( [apple] => りんご [orange] => オレンジ [grape] => ぶどう [pineapple] => パイナップル [dog] => イヌ [cat] => ネコ [mouse] => ネズミ [hippopotamus] => カバ )
配列の結合をする際には、もとの配列を保持するために結合用の新しい配列を用意するとよいでしょう。
array_merge()関数を使うほか、コード6のように + 連結子を使うこともできます。
コメントフォーム
自分の勉強にもなりますので、コメントいただけるとうれしいです。