この関数は、配列から現在のシンボルテーブルに変数をインポートするために使用されます。
この関数は連想配列 var_array
を引数とし、そのキーを変数名、値を変数の値として処理します。
各キー/値の組に関して、extract_type
および
prefix
パラメータに基づき、
現在のシンボルテーブルに変数を一つ作成します。
注意: バージョン 4.0.5 以降、この関数は展開された変数の数を返します。
注意: EXTR_IF_EXISTS と EXTR_PREFIX_IF_EXISTS はバージョン 4.2.0 で導入されました。
注意: EXTR_REFS はバージョン 4.3.0 で導入されました。
extract() は、各キーについて変数名として有効であるかどうか、
そして、シンボルテーブルの既存の変数と衝突しないかどうかを確認します。
無効または数値キーおよび衝突に関する対処法は、
extract_type
で定義されます。
これは以下の値のどれかとなります。
衝突があった場合、存在する変数が上書きされます。
衝突があった場合、存在する変数は上書きされません。
衝突があった場合、prefix
を前につけた新しい変数となります。
全ての変数の前に prefix
を付けます。PHP
4.0.5 以降、接頭辞を数値とすることも可能です。
無効または数値の変数名のみに接頭辞
prefix
を付ける。このフラグは、PHP
4.0.5 で追加されました。
カレントのシンボルテーブルに既に存在する場合にのみ上書きします。 例えば $_REQUEST 以外にあなたが定義した変数のみを展開し 有効な変数としたいような場合に有用です。このフラグは PHP 4.2.0 で追加されました。
同じ変数だが接頭辞をつけていないバージョンの変数が カレントのシンボルテーブルに存在する場合にのみ 変数を生成します。このフラグは PHP 4.2.0 で追加されました。
変数を参照として展開します。
これはインポート済みの変数が、
var_array
パラメータの値に常に参照付けられることを意味します。
このフラグを単独で使用するか、
あるいはextract_type
と和算することにより、
他のフラグとそれを組み合わせることができます。
このフラグは PHP 4.3.0 で追加されました。
extract_type
が指定されない場合、
EXTR_OVERWRITE とみなされます。
prefix
は、
extract_type
が
EXTR_PREFIX_SAME、EXTR_PREFIX_ALL、
EXTR_PREFIX_INVALID あるいは
EXTR_PREFIX_IF_EXISTS の場合にのみ必要であることに注意してください。
接頭辞を付けた変数名が有効な変数名でない場合、
この変数はシンボルテーブルにインポートされません。接頭辞は、
アンダースコア文字で配列のキーから自動的に分割されます。
extract() は、 各キーが有効な変数名からなるかどうかを確認し、 有効な変数名である場合のみインポート処理を行います。
警告 |
extract() をユーザー入力 ($_GET, ...)
のような信頼できないデータについて使用しないでください。
もし行う場合、例えば
register_globals
を信頼しているような古いコードを一時的に実行したい場合、
EXTR_SKIP のような
|
extract の使用例としては、シンボルテーブルに wddx_deserialize() から返された連想配列を インポートすることが考えられます。
EXTR_PREFIX_SAME を指定したため、$size
は上書きされず、$wddx_size
が作成されます。
EXTR_SKIP が指定された場合、$wddx_sizeは作成されません。
EXTR_OVERWRITE
の場合は、$size
の値は "medium" となります。
EXTR_PREFIX_ALL の場合は新規の変数
$wddx_color
,
$wddx_size
, $wddx_shape
が作成されます。
連想配列を使用する必要があります。EXTR_PREFIX_ALL または EXTR_PREFIX_INVALID を使用しない限り、 数値添字の配列には結果は出力されません。
compact() も参照ください。