最近PHPを勉強し直すため、参考書を読んでいるのだが、その中で使ったことのなかった関数が出てきたのでメモ。
extract関数の使い方
例えば以下のような連想配列があったとする。
$arr = array(
'hoge' => 1,
'fuga' => 2,
'piyo' => 3,
);
extract関数を使うことで、以下のようにキーを変数名として一括展開することが可能だ。
extract($arr);
echo "$hoge\n$fuga\n$piyo";
// 以下出力結果
1
2
3
デフォルトでは関数実行時に同名の変数があった場合、元の変数が上書きされるようになっている。
これを防ぎたい場合は、以下のようにオプションを指定することで、新たに生成される変数に接頭辞を付けることができ、変数の競合を避けることができる。
extract($arr, EXTR_PREFIX_ALL, 'aaa');
echo "$aaa_hoge\n$aaa_fuga\n$aaa_piyo";
// 以下出力結果
1
2
3
第二引数にEXTR_PREFIX_ALLを指定し、第三引数に接頭辞となる文字列を指定する。
こうすることで、接頭辞をアンダースコアで繋げた変数名として、新たに変数を生成することができる。