extract

extract関数:連想配列を変数に展開する

使い方

$var_count = extract( $map, EXTR_PREFIX_ALL, $prefix );

PHPでは連想配列(配列のキーが文字列の配列など)を簡単に作れますが、それぞれの要素を1つ1つの変数に展開するということも可能です。
第1引数に対象の配列、第2引数はオプション、第3引数は接頭辞です。
戻り値には展開できた変数の数が返ります。

オプションには接頭辞を付ける(EXTR_PREFIX_ALL)とか、
同じ変数名が有った場合のみ上書きする(EXTR_IF_EXISTS)とかが指定できます。
ちなみに接頭辞を付けると勝手に接頭辞の後に_(半角アンダーバー)が付けられます。

サンプルコード

<?php
$emp_map = array(
    "0001" => "山田太郎",
    "0002" => "鈴木花子",
    "0003" => "上田三郎",
);

$var_count = extract($emp_map, EXTR_PREFIX_ALL, "emp");

//Result:
echo "展開された変数の数:".$var_count.PHP_EOL;
echo "\$emp_0001 => ".$emp_0001.PHP_EOL;
echo "\$emp_0002 => ".$emp_0002.PHP_EOL;
echo "\$emp_0003 => ".$emp_0003.PHP_EOL;

実行結果

展開された変数の数:3
$emp_0001 => 山田太郎
$emp_0002 => 鈴木花子
$emp_0003 => 上田三郎

手抜きでスミマセンが、第2引数の定数は公式サイトをご覧ください。

使いどころ

まあこんなこと普通はしないですよね。
配列の要素を使って次の処理に移るときに別の変数に移し替えるにしても、明示的にキーを指定したほうが安全ですし、プログラマの意図が分かりやすいコードになって可読性が上がります。
めんどくさがり屋のための関数と言うところでしょうか。

使いどころの説明になってない・・・ま、いいか。

公式マニュアル

http://php.net/manual/ja/function.extract.php