ホームページ  >  記事  >  バックエンド開発  >  PHP extract() 関数 (配列分割) の定義と使用法

PHP extract() 関数 (配列分割) の定義と使用法

WBOY
WBOYオリジナル
2016-07-25 08:54:091363ブラウズ
  1. $a = 'オリジナル';
  2. $my_array = array("a" => "猫","b" => "犬", "c" => " Horse");
  3. extract($my_array);
  4. echo "$a = $a; $b = $b; $c = $c";
  5. ?>
コードをコピー

$a = 猫; $b = 犬; $c = 馬

例 2 すべてのパラメータを使用します。

  1. $a = 'オリジナル';

  2. $my_array = array("a" => "猫","b" => "犬", " c" => "馬");

  3. extract($my_array, EXTR_PREFIX_SAME, 'dup');

  4. echo "$a = $a; $b = $b; $c = $c; $dup_a = $dup_a;";

  5. ?

出力: $a = オリジナル; $b = 犬; $c = 馬; $dup_a = 猫; PHPのextract()関数

最近、すごい人のコードを見ていたら、extract() というとても便利な関数を見つけました。その主な機能は、キー名が変数名として使用され、要素の値が です。変数の値を取得するのとは別の便利なツールと言えます。 Fang 氏は、$_POST または $_GET の要素を抽出するのは簡単であると述べました。 フォームで送信されたコンテンツに 1 つずつ値を割り当てることはできません。次のコードを使用できます。

フォーム.html

  1. コードをコピーします
  2. action.php で、extract() 関数を使用して $_POST グローバル データを抽出します。 アクション.php
extract($_POST);

//$username = $_POST['username']
//$password = $_POST['password']?> と同等;
  1. コードをコピー
  2. 以下は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_OVERWRITE 競合がある場合、既存の変数は上書きされます。 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 に依存する古いコードを一時的に実行するためにこれを行う場合は、必ず上書きされない extract_type 値を使用してください。 、EXTR_SKIP など、php.ini の variables_order で定義された順序で抽出する必要があることに注意してください。

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

    例:

    1. /* $var_array が wddx_deserialize によって返される配列であると仮定します*/
    2. $size = "large"
    3. $var_array = array("color" => "blue",
    4. ";サイズ " => "中",
    5. "形状" => "球");
    6. extract($var_array, EXTR_PREFIX_SAME, "wddx");
    7. echo "$color, $size, $shape, $wddx_sizen";
    8. ?>コードをコピー

      出力: 青、大、球、中

      EXTR_PREFIX_SAME が指定されているため、

      $size はオーバーライドされません。これにより、$wddx_size が構築されます。 EXTR_SKIP が指定されている場合、$wddx_size も作成されません。 EXTR_OVERWRITE は $size の値を作成します 「中」の場合、EXTR_PREFIX_ALL は新しい変数 $wddx_color、$wddx_size、$wddx_shape を作成します。

      連想配列を使用する必要があります。EXTR_PREFIX_ALL または EXTR_PREFIX_INVALID が使用されない限り、数値インデックス付き配列は結果を生成しません。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。