ホームページ >バックエンド開発 >PHPチュートリアル >PHP 関数 extract() アプリケーションのスキルの簡単な分析_PHP チュートリアル
たとえば、$_POST または $_GET の要素を簡単に抽出できます。フォームで送信されたコンテンツに 1 つずつ値を割り当てることはできません。次のコードを使用できます。 .html
すごくないですか?便利?あはは、PHP マニュアルの PHP 関数 extract() の詳細な説明は次のとおりです:
extract
(PHP 4, PHP 5)
extract — 配列から変数を現在のシンボル テーブルにインポートします
手順
int extract (array $var_array [, int $extract_type [, string $prefix ]] )
PHP 関数 extract() は、配列から現在のシンボル テーブルに変数をインポートするために使用されます。連想配列 var_array を引数として受け入れ、キー名を変数名として、値を変数値として使用します。キーと値のペアごとに、extract_type パラメーターと prefix パラメーターの影響を受ける変数が現在のシンボル テーブルに作成されます。
注: バージョン 4.0.5 以降、この関数は抽出された変数の数を返します。
注: EXTR_IF_EXISTS と EXTR_PREFIX_IF_EXISTS はバージョン 4.2.0 で導入されました。
注: EXTR_REFS はバージョン 4.3.0 で導入されました。
PHP 関数 extract() は、各キー名をチェックして正当な変数名として使用できるかどうかを確認し、シンボル テーブル内の既存の変数名との競合もチェックします。不正なキー名、数値名、および競合するキー名の処理は、extract_type パラメータによって決定されます。次の値のいずれかを指定できます:
EXTR_OVERWRITE
競合がある場合は、既存の変数を上書きします。
EXTR_SKIP
競合がある場合、既存の変数は上書きされません。
EXTR_PREFIX_SAME
競合がある場合は、変数名の前に prefix を付けます。
EXTR_PREFIX_ALL
すべての変数名に接頭辞を追加します。 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 で OR を使用して他のフラグと組み合わせて使用することもできます。このタグはPHP 4.3.0で新たに追加されました。
extract_type が指定されていない場合は、EXTR_OVERWRITE が想定されます。
接頭辞は、extract_type の値が EXTR_PREFIX_SAME、EXTR_PREFIX_ALL、EXTR_PREFIX_INVALID、または EXTR_PREFIX_IF_EXISTS の場合にのみ必要であることに注意してください。プレフィックスを付加した結果が正当な変数名ではない場合、シンボルテーブルにはインポートされません。プレフィックスと配列キー名の間にアンダースコアが自動的に追加されます。
extract() は、シンボル テーブルに正常にインポートされた変数の数を返します。
警告
ユーザー入力 ($_GET,...) など、信頼できないデータに対して PHP 関数 extract() を使用しないでください。たとえば、register_globals に依存する古いコードを一時的に実行するためにこれを行う場合は、必ず EXTR_SKIP などの上書きされない extract_type 値を使用し、抽出は php の variables_order で定義された順序で行う必要があることに注意してください。イニ。
PHP 関数 extract() の使用法の 1 つは、wddx_deserialize() によって返された結合された配列の内容をシンボル テーブル変数にインポートすることです。
Example#1 extract() example
- < ?php
- /* 假定 $var_array 是 wddx_
deserialize 返回的数组*/- $size = “large”;
- $var_array = array(”color” => “blue”,
- “size” => “medium”,
- “shape” => “sphere”);
- extract($var_array, EXTR_
PREFIX_SAME, “wddx”);- echo “$color, $size, $shape, $wddx_sizen”;
- ?>
上記の例は出力します:
blue、large、sphere、medium
$size は、EXTR_PREFIX_SAME が指定されているためオーバーライドされず、これにより $wddx_size が確立されます。 EXTR_SKIP が指定されている場合、$wddx_size も作成されません。 EXTR_OVERWRITE は $size の値を「medium」にし、EXTR_PREFIX_ALL は新しい変数 $wddx_color、$wddx_size、$wddx_shape を作成します。
PHP 関数 extract() は連想配列を使用する必要があります。EXTR_PREFIX_ALL または EXTR_PREFIX_INVALID が使用されない限り、数値インデックス付き配列は結果を生成しません。