php の関数一覧
compact関数の例↓
<?php
$city = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";
$location_vars = array("city", "state");
$result = compact("event", "nothing_here", $location_vars);
print_r($result);
?>Array
(
[event] => SIGGRAPH
[city] => San Francisco
[state] => CA
)
配列 関数 - 配列からシンボルテーブルに変数をインポートする
extract
この関数を利用すると、配列の中にある値を分解して、表示する。例をみるとわかるが、<?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_size\n";
?>
(PHP 4, PHP 5)
extract — 配列からシンボルテーブルに変数をインポートする
説明
配列からシンボルテーブルに変数をインポートします。
extract() は、各キーについて変数名として有効であるかどうか、 そして、シンボルテーブルの既存の変数と衝突しないかどうかを確認します。
パラメータ
- var_array
-
この関数は連想配列 var_array を引数とし、そのキーを変数名、値を変数の値として処理します。 各キー/値の組に関して、extract_type および prefix パラメータに基づき、 現在のシンボルテーブルに変数を一つ作成します。
連想配列を使用する必要があります。EXTR_PREFIX_ALL または EXTR_PREFIX_INVALID を使用しない限り、 数値添字の配列には結果は出力されません。
- extract_type
-
無効または数値キーおよび衝突に関する対処法は、 extract_type で定義されます。 これは以下の値のどれかとなります。
- EXTR_OVERWRITE
- 衝突があった場合、存在する変数が上書きされます。
- EXTR_SKIP
- 衝突があった場合、存在する変数は上書きされません。
- EXTR_PREFIX_SAME
- 衝突があった場合、prefix を前につけた新しい変数となります。
- EXTR_PREFIX_ALL
- 全ての変数の前に prefix を付けます。
- EXTR_PREFIX_INVALID
- 無効または数値の変数名のみに接頭辞 prefix を付けます。
- EXTR_IF_EXISTS
- 現在のシンボルテーブルに既に存在する場合にのみ上書きします。 例えば $_REQUEST 以外にあなたが定義した変数のみを展開し 有効な変数としたいような場合に有用です。
- EXTR_PREFIX_IF_EXISTS
- 同じ変数だが接頭辞をつけていないバージョンの変数が 現在のシンボルテーブルに存在する場合にのみ 変数を生成します。
- EXTR_REFS
- 変数を参照として展開します。 これはインポート済みの変数が、 var_array パラメータの値に常に参照付けられることを意味します。 このフラグを単独で使用するか、 あるいはextract_type と和算することにより、 他のフラグとそれを組み合わせることができます。
extract_type が指定されない場合、 EXTR_OVERWRITE とみなされます。
- prefix
-
prefix は、 extract_type が EXTR_PREFIX_SAME、EXTR_PREFIX_ALL、 EXTR_PREFIX_INVALID あるいは EXTR_PREFIX_IF_EXISTS の場合にのみ必要であることに注意してください。 接頭辞を付けた変数名が有効な変数名でない場合、 この変数はシンボルテーブルにインポートされません。接頭辞は、 アンダースコア文字で配列のキーから自動的に分割されます。
返り値
シンボルテーブルにインポートした変数の数を返します。
変更履歴
| バージョン | 説明 |
|---|---|
| 4.3.0 | EXTR_REFS が追加されました。 |
| 4.2.0 | EXTR_IF_EXISTS と EXTR_PREFIX_IF_EXISTS が追加されました。 |
| 4.0.5 | この関数は、取り込んだ変数の数を返すようになりました。 EXTR_PREFIX_INVALID が追加されました。EXTR_PREFIX_ALL が数値変数も扱ううようになりました。 |
例
blue, large, sphere, medium
注意
extract() をユーザー入力 ($_GET, ...) のような信頼できないデータについて使用しないでください。 もし行う場合、例えば register_globals を信頼しているような古いコードを一時的に実行したい場合、 EXTR_SKIP のような extract_type の値が上書きされていないことを確認してください。そして php.ini の variables_order で定義されたものと同じ順で展開すべきであることに留意してください。