extract関数って便利。
2008-12-20 (土)カテゴリPHP, 制作extract, 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使えば全然出来るわけです。
そちらでも書ける事が応用効くし、重要かな。。と思います。








