最近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を指定し、第三引数に接頭辞となる文字列を指定する。

こうすることで、接頭辞をアンダースコアで繋げた変数名として、新たに変数を生成することができる。