extract
配列からシンボルテーブルに変数をインポートする
&reftitle.description;
intextract
arrayarray
intflagsEXTR_OVERWRITE
stringprefix""
配列から シンボルテーブル に変数をインポートします。
各キーについて変数名として有効であるかどうか、
そして、シンボルテーブルの既存の変数と衝突しないかどうかを確認します。
ユーザーの入力、例えば $_GET や $_FILES のような、
信頼できないデータに extract を使用しないでください。
&reftitle.parameters;
array
この関数は連想配列 var_array
を引数とし、そのキーを変数名、値を変数の値として処理します。
各キー/値の組に関して、flags および
prefix パラメータに基づき、
現在のシンボルテーブルに変数を一つ作成します。
連想配列を使用する必要があります。EXTR_PREFIX_ALL
または EXTR_PREFIX_INVALID を使用しない限り、
数値添字の配列には結果は出力されません。
flags
無効または数値キーおよび衝突に関する対処法は、
flags で定義されます。
これは以下の値のどれかとなります。
EXTR_OVERWRITE
衝突があった場合、存在する変数が上書きされます。
EXTR_SKIP
衝突があった場合、存在する変数は上書きされません。
EXTR_PREFIX_SAME
衝突があった場合、prefix
を前につけた新しい変数となります。
EXTR_PREFIX_ALL
全ての変数の前に prefix を付けます。
EXTR_PREFIX_INVALID
無効または数値の変数名のみに接頭辞
prefix を付けます。
EXTR_IF_EXISTS
現在のシンボルテーブルに既に存在する場合にのみ上書きします。
例えば $_REQUEST からあなたが定義した変数のみを展開し
有効な変数としたいような場合に有用です。
EXTR_PREFIX_IF_EXISTS
同じ変数だが接頭辞をつけていないバージョンの変数が
現在のシンボルテーブルに存在する場合にのみ
変数を生成します。
EXTR_REFS
変数を参照として展開します。
これはインポート済みの変数が、
array
パラメータの値に常に参照付けられることを意味します。
このフラグを単独で使用するか、
あるいはflagsと和算することにより、
他のフラグとそれを組み合わせることができます。
flags が指定されない場合、
EXTR_OVERWRITE とみなされます。
prefix
prefix は、
flags が
EXTR_PREFIX_SAME、EXTR_PREFIX_ALL、
EXTR_PREFIX_INVALID あるいは
EXTR_PREFIX_IF_EXISTS の場合にのみ必要であることに注意してください。
接頭辞を付けた変数名が有効な変数名でない場合、
この変数はシンボルテーブルにインポートされません。接頭辞は、
アンダースコア文字で配列のキーから自動的に分割されます。
&reftitle.returnvalues;
シンボルテーブルにインポートした変数の数を返します。
&reftitle.examples;
extract の例
"blue",
"size" => "medium",
"shape" => "sphere"
);
extract($var_array, EXTR_PREFIX_SAME, "wddx");
echo "$color, $size, $shape, $wddx_size\n";
?>
]]>
&example.outputs;
EXTR_PREFIX_SAME を指定したため、$size
は上書きされず、$wddx_size が作成されます。
EXTR_SKIP が指定された場合、$wddx_size は作成されません。
EXTR_OVERWRITE
の場合は、$size の値は "medium" となります。
EXTR_PREFIX_ALL の場合は新規の変数
$wddx_color,
$wddx_size, $wddx_shape
が作成されます。
&reftitle.notes;
extract をユーザー入力
($_GET や $_FILES など)
のような信頼できないデータについて使用しないでください。
もし行う場合、
EXTR_SKIP のような flags
の値が上書きされていないことを確認してください。そして
&php.ini; の
variables_order
で定義されたものと同じ順で展開すべきであることに留意してください。
&reftitle.seealso;
compact
list