PHP マニュアル
前のページ |  | 次のページ

# extract

(PHP 3>= 3.0.7, PHP 4 )

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

## 説明

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

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

> 注意 バージョン4.0.5以降、この関数は展開された変数の数を返します。

extract()は、各キーについて変数名として有効で あるかどうか、そして、シンボルテーブルの既存の変数と衝突しないか どうかを確認します。無効または数値キーおよび衝突に関する対処法は、 `extract_type`で定義されます。これは以下の値 のどれかとなります。

EXTR_OVERWRITE

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

EXTR_SKIP

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

EXTR_PREFIX_SAME

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

EXTR_PREFIX_ALL

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

EXTR_PREFIX_INVALID

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

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

`prefix`は、 `extract_type`がEXTR_PREFIX_SAME、 EXTR_PREFIX_ALL、EXTR_PREFIX_INVALID の場合にのみ必要であることに 注意して下さい。接頭辞を付けた変数名が有効な変数名でない場合、こ の変数はシンボルテーブルにインポートされません。

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

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

例 1extract()の例
    <?php

    /* $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` が作成されます。

連想配列を使用する必要があり、数値添字の配列には結果は出力されま せん。

compact()も参照下さい。

前のページ | ホーム | 次のページ
end | 上に戻る | in_array