PHP extract() 関数

キー値 "Cat"、"Dog"、および "Horse" を変数 $a、$b、および $c に割り当てます:

<?php
$a = "Original";
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "\$a = $a; \$b = $b; \$c = $c";
?>

実行例

定義と使用方法

extract() 関数は配列から変数を現在のシンボルテーブルにインポートします。

この関数は、配列のキー名を変数名として、配列のキー値を変数値として使用します。配列の各要素に対して、現在のシンボルテーブルに対応する変数を作成します。

第2引数 type ある変数が既存している場合、配列に同名の要素がある場合、extract() 関数がその衝突に対してどのように対応するかを指定します。

この関数は、シンボルテーブルに成功してインポートされた変数の数を返します。

文法

extract(array,extract_rules,prefix)
パラメータ 説明
array 必須です。使用する配列を指定します。
extract_rules

選択可能です。extract() 関数は、各キー名が合法な変数名であるかどうかを確認し、シンボルテーブルで既存の変数名と衝突するかどうかも確認します。不適切または衝突するキー名の処理は、このパラメータに基づいて決定されます。

可能な値:

  • EXTR_OVERWRITE - デフォルト。冲突がある場合、既存の変数を上書きします
  • EXTR_SKIP - 冲突がある場合、既存の変数を上書きしません
  • EXTR_PREFIX_SAME - 冲突がある場合、変数名の前に接頭辞を付加します prefix
  • EXTR_PREFIX_ALL - すべての変数名に接頭辞を付加します prefix
  • EXTR_PREFIX_INVALID - 不適切または数字の変数名の前に接頭辞を付加します prefix
  • EXTR_IF_EXISTS - 現在のシンボルテーブルに同名の変数が存在する場合にのみ、その値を上書きします。他のものは処理しません。
  • EXTR_PREFIX_IF_EXISTS - 現在のシンボルテーブルに同名の変数が存在する場合にのみ、接頭辞を付加した変数名を作成します。他のものは処理しません。
  • EXTR_REFS - 変数を参照として抽出します。インポートされた変数は、配列パラメータの値を引き続き参照しています。
prefix

選択可能です。ご注意ください prefix のみ extract_type の値が EXTR_PREFIX_SAME、EXTR_PREFIX_ALL、EXTR_PREFIX_INVALID または EXTR_PREFIX_IF_EXISTS である場合に必要です。接頭辞を追加した結果が合法な変数名でない場合、シンボルテーブルにインポートされません。

接頭辞と配列のキー名の間に自動的に下線が追加されます。

技術的な詳細

返り値: シンボルテーブルに成功してインポートされた変数の数を返します。
PHP バージョン: 4+
更新ログ:

extract_rules の値 EXTR_REFS は PHP 4.3 で追加されました。

extract_rules の値 EXTR_IF_EXISTS および EXTR_PREFIX_IF_EXISTS は PHP 4.2 で追加されました。

PHP 4.0.5 から、この関数はシンボルテーブルに成功してインポートされた変数の数を返します。

extract_rules の値 EXTR_PREFIX_INVALID は PHP 4.0.5 で追加されました。

PHP 4.0.5 からextract_rules の値 EXTR_PREFIX_ALL には数字変数も含まれます。

さらに多くの例

例 1

すべてのパラメータを使用する:

<?php
$a = "Original";
$my_array = array("a" => "Cat", "b" => "Dog", "c" => "Horse");
extract($my_array, EXTR_PREFIX_SAME, "dup");
echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a";
?>

実行例