extract

extract -- 配列からシンボルテーブルに変数をインポートする

説明

void extract(array var_array, int [extract_type] , string [prefix] );

この関数は、配列から現在のシンボルテーブルに変数をインポートする ために使用されます。この関数は連想配列var_array を引数とし、そのキーを変数名、値を変数の値として処理します。 各キー/値の組に関して、extract_type および prefix パラメータに基づき 現在のシンボルテーブルに変数を一つ作成します。

extract は存在する変数との衝突を確認します。 衝突時の対処法は、extract_typeで定義されます。 これは以下の値のどれかとなります。

EXTR_OVERWRITE

衝突があった場合、存在する変数が上書きされます。

EXTR_SKIP

衝突があった場合、存在する変数は上書きされません。

EXTR_PREFIX_SAME

衝突があった場合、prefixを前につけた 新しい変数となります。

EXTR_PREFIX_ALL

全ての変数の前にprefixを付けます。

extract_type が指定されない場合、EXTR_OVERWRITE が仮定されます。

prefix は、 extract_type が EXTR_PREFIX_SAME または EXTR_PREFIX_ALL の場合にのみ必要であることに注意して下さい。

extract は、各キーが有効な変数名からなるか どうかを確認し、有効な変数名である場合のみインポート処理を行います。

extract の使用例としては、シンボルテーブルに wddx_deserializeから返された連想配列を インポートすることが考えられます。

例 1. extract の例


 <?
 
 /* $var_array はwddx_deserializeから返された配列と仮定します
 */
$size = "large";
$var_array = array("color" => "blue",
                   "size"  => "medium",
                   "shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");
 
print "$color, $size, $shape, $wddx_size\n";
 
?>
      

上記の例の結果は以下となります。


blue, large, sphere, medium
 	

EXTR_PREFIX_SAME を指定したため、$size は上書きされず、$wddx_size が作成されます。 EXTR_SKIP が指定された場合、$wddx_size は作成されません。EXTR_OVERWRITE の場合は、$size の値は "medium" となります。EXTR_PREFIX_ALL の場合は 新規の変数 $wddx_color, $wddx_size, $wddx_shape が作成されます。