連想配列とは・・・

連想配列とは、$hoge['key'] = 'value'; といったように、添え字を数字ではなく文字列にした配列だ。他言語ではハッシュとも呼ばれる。

これはよく使うので、使いこなせるようになっておこう。
基本的な使い方は、変数をグループ分けした連想配列にまとめること。
これにより、ばらばらな変数がグループごとに管理でき、非常に効率よくなる。
たとえばグローバル変数にする場合、 global $hoge; だけですみ、だらだら関連変数を書く必要がなくなる。
そして、添え字が文字列なので中身の意味がわかりやすい。

連想配列の作り方は他に、 $hoge = array(key=>value,key2=>value2);ともできる。
沢山の連想配列の値を定義する場合、1key/1行で定義すると楽だ。

例:
$hoge = array(
'key'=>'value',
'key2'=>'value2'
);

そして今回の主題は、2つの連想配列を使いこなす事にある。
2つの連想配列 $hoge と $hogeII があるとする。
$id = 'abc';
$value = $hogeII[$hoge[$id]];

このように、ある連想配列の値から別の連想配列の値を呼び出す方法は非常に便利で、よくつかわれる。

簡単な例をみてみよう
$hoge['人の名前'] = 'id';
$deta['id'] = 'data';

このような感じの2つの連想配列があるとする。
idは、dataの整理IDと思って欲しい。
これは、『人の名前』と『data』は直接のかかわりはなく、間接的に関わっている場合である。
たとえば、誰(人の名前)がどの商品(data)を使用中など。
もし人の名前とdata(商品)を直接関連づけて $hoge['人の名前'] = 'data';とした場合どうだろうか。
商品内容の記述が変わった場合、同じdataを持つ全ての人を再編集しなくてはならない。
それ以前に、あるdataを扱う人がいなくなった場合、そのdataが消滅してしまう。
これじゃまともな管理はできないね。

ちょっと分かりにくい例だったかもしれないが、2つの独立した連想配列をこうして組み合わせて使うことを覚えておくと良い。

最後にPHPでの連想配列の基本に戻る。
phpでは、文字列は '' か "" でかこむ。
すなわち、$hoge['abc'] といったかんじにだ。
''で囲むのは、これは文字列ですという意味なだけ。
では次の場合どうだろうか。
print "ほにゃらにゃは $hoge['abc'] です。";
''、""の意味がわかる人には、これだとエラーが出ることが一目瞭然。
この場合、$hoge[abc]という変数を呼び出していることになる。
文法的に間違いになる。 すでに""で囲まれているから、キーを''で囲まなくても文字列とみなされるのだ。

また、こういった連想配列の定義方法もある。
$hoge[key] ='value';
keyが '' で囲まれていないから文字列として扱われないとおもわれがちだ。
しかしphpでは、連想配列の場合にはキーを '' でかこまなくても最終的には文字列として処理してくれる。
宣言さている文字列(定数)かを調べ、宣言されていない場合はただの文字列として処理する仕組みだ。
すなわち、予約語であった場合、文字列の変換が行われて正しく動作しなくなるので気をつけよう。

あと '' の意味を理解してない人が間違いやすい例として
$hoge['$abc'] というように、キーを変数とする場合に '' で囲んでしまう。
''の中では変数を扱えない。ただの文字列となってしまう。
なので、全体を見るとこうなる。
$hoge['papa'] = 'よっぱらい';
$dare = 'papa';
$value = $hoge[$dare] ;
三行目は、$value = $hoge["$dare"] ; でも動作する。
''はただの文字列で、""は変数を含められる文字列である。
最終更新:2008年01月15日 11:26