ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルでの extract() 関数の素晴らしい使用法

PHP_PHP チュートリアルでの extract() 関数の素晴らしい使用法

WBOY
WBOYオリジナル
2016-07-13 17:38:22874ブラウズ

最近、すごい人のコードを見ていたら、extract() というとても便利な関数を見つけました。その主な機能は、キー名が変数名として使用され、要素の値が です。これは、配列操作とも言えます。たとえば、$_POST や $_GET の要素を簡単に抽出することができます。次のコードを直接使用できます:

フォーム.html





action.php で、extract() 関数を使用して $_POST グローバル データを抽出するだけです。
action.php


抽出($_POST);
// $username = $_POST[username];
と同等 //$パスワード = $_POST[パスワード];
?>

とても便利ですね?あはは、PHP マニュアルの詳細な説明は次のとおりです:

抜粋
(PHP 4、PHP 5)

extract — 変数を配列から現​​在のシンボルテーブルにインポートします


説明
int extract (array $var_array [, int $extract_type [, string $prefix ]] )

この関数は、配列から現​​在のシンボル テーブルに変数をインポートするために使用されます。連想配列 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 パラメータによって決定されます。次のいずれかの値を指定できます:

EXTR_上書き
競合がある場合、既存の変数は上書きされます。
EXTR_SKIP
競合がある場合、既存の変数は上書きされません。
EXTR_PREFIX_SAME
競合がある場合は、変数名の前に prefix を付けます。
EXTR_PREFIX_ALL
すべての変数名の前に prefix を付けます。 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 など) など、信頼できないデータに対して extract() を使用しないでください。たとえば、register_globals に依存する古いコードを一時的に実行するためにこれを行う場合は、必ず EXTR_SKIP などの上書きされない extract_type 値を使用し、抽出は php の variables_order で定義された順序で行う必要があることに注意してください。イニ。

extract() の使用法の 1 つは、wddx_deserialize() によって返された結合配列の内容をシンボル テーブル変数にインポートすることです。

例#1 extract() の例

/* $var_array が wddx_deserialize によって返される配列であると仮定します */
$size = “大”;
$var_array = array("color" => "青",
「サイズ」 => 「中」、
"形状" => "球");
extract($var_array, EXTR_PREFIX_SAME, “wddx”);
echo 「$color、$size、$shape、$wddx_size」 ”;
?>

上記の例は次のように出力します:

青、大、球、中

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 が使用されない限り、数値インデックス付き配列は結果を生成しません。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486500.html技術記事最近、すごい人のコードを見ていたら、extract() というとても便利な関数を見つけました。その主な機能は、キー名を変数名、要素の値を変数値として配列を展開することです。 . それは言えます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。