extract タグ記事

extract関数って便利。

2008-12-20 (土)カテゴリPHP, 制作タグ,

意外と使いそうで、使わない関数なんだけども
配列使う上では便利な関数。自分メモの意味も込めて。

配列に付けたキーをそのまま変数として使うことが出来ます。

PHP
$apple = "青森りんご";

$arr = array(
	"apple"	=> "りんご",
	"orange"	=> "オレンジ",
	"melon"	=> "メロン",
);
extract($arr, EXTR_PREFIX_SAME, "pre");

echo $apple.$orange.$melon.$pre_apple;

上記を実行結果は。

青森りんごオレンジメロンりんご

もしも変数が被ったら上記の場合は、「pre_」が付いて変数となります。
「EXTR_PREFIX_SAME」部分は他にも色々あります。
個人的には「EXTR_PREFIX_ALL」がおすすめ。わりかしコードの統一ルール作りやすいですしね。

以下、PHPプロ引用

EXTR_OVERWRITE
同じ名前の変数があった場合、存在する変数が上書きされます。

EXTR_SKIP
同じ名前の変数があった場合、存在する変数は上書きされません。

EXTR_PREFIX_SAME
同じ名前の変数があった場合、prefix を前につけた新しい変数となります。

EXTR_PREFIX_ALL
全ての変数の前に prefix を付けます。PHP 4.0.5 以降、接頭辞を数値とすることも可能です。

EXTR_PREFIX_INVALID
無効または数値の変数名のみに接頭辞 prefix を付ける。このフラグは、PHP 4.0.5 で追加されました。

EXTR_IF_EXISTS
カレントのシンボルテーブルに既に存在する場合にのみ上書きします。
例えば $_REQUEST 以外にあなたが定義した変数のみを展開し 有効な変数としたいような場合に有用です。このフラグは PHP 4.2.0 で追加されました。

EXTR_PREFIX_IF_EXISTS
同じ変数だが接頭辞をつけていないバージョンの変数が カレントのシンボルテーブルに存在する場合にのみ変数を生成します。このフラグは PHP 4.2.0 で追加されました。

EXTR_REFS
変数を参照として展開します。 これはインポート済みの変数が、 var_array パラメータの値に常に参照付けられることを意味します。このフラグを単独で使用するか、 あるいはextract_type と和算することにより、 他のフラグとそれを組み合わせることができます。
このフラグは PHP 4.3.0 で追加されました。

といった具合です。
関数は便利ですが、上記のような作りはforeach使えば全然出来るわけです。
そちらでも書ける事が応用効くし、重要かな。。と思います。

プログラミングPHP 第2版

プログラミングPHP 第2版

Rasmus Lerdorf Kevin Tatroe Peter MacIntyre
オライリー・ジャパン