PHPの連想配列の要素を添字と同じ名前の変数で取得する

ソウルハッカーズのデータベースをMYSQLで操作してHTMLを生成しているんだが、MYSQLからデータを受け取ると、添字無しの配列、カラム名が添字の連想配列、両方の3種類の方法で取得できるんだが、よっぽどのことが無い限り後者2つのどちらかで取得する。

NAMERACELV
モト死神72
ミトラス魔王80
メタトロン大天使80

こんな感じにデータベースに登録されているとする。これをPHPからSQLコマンドを入れて取得すると、一体分のデータが

( "NAME" => "モト", "RACE" => "死神", "LV" => 72 )

こんな感じに渡される。これを使う場合には、「$array[‘NAME’]」や「$array[‘RACE’]」などといった方法で呼び出す。

ここまではいいんだが、実際には扱っているカラム数が数十に上る。そして、編集し易さを重視するためにHTMLタグをヒアドキュメントを利用して出力しているのだが、添字付きの変数を2重引用符内やヒアドキュメント中で呼び出す場合は「{」と「}」で囲まなければいけない。ただでさえ添字付きなので非常に冗長になる。

そこでそれを回避するべく

$NAME = $array['NAME']; $RACE = $array['RACE']; $LV = $array['LV']; ...

といったように、ずら~~~~~っと変数を作成していたわけだが、WordPressのソースを眺めてたら以外な方法でこれが解決されていた。

$varstoreset = array_keys( $array ); foreach( $varstoreset as $var ) {   $$var = $array[$var]; }

これだけ。このたった3行で上の変数再指定を全てカットできるようになる。

配列の添字を全て取得する。foreachで回して、$添字という変数を作成してデータを挿入。やってることはこれだけなんだが、そもそも「$$varと記述して、$varが文字列なら$文字列という変数を呼び出せる」こと自体全く知らなかったので、目から鱗というか。マニュアルに載ってたか? こんな方法。