5

extract(some_function_that_returns_array());

正常に動作します。

しかし、php.netでは、最初のパラメーターは参照変数でなければならないと書かれています:http: //php.net/manual/en/function.extract.php。それは間違いですか?


それで

function foo(&$array){}

function lol(){ $arr = array(); return $arr; }

foo(lol());

は、「厳密な標準:変数のみを参照によって渡す必要があります...」を示しています。

それは抽出では起こりません

4

1 に答える 1

1

ドキュメントにエラーがあるか、関数にエラーがあります。正直なところ、extractに参照によって配列を渡す必要がある理由はわかりませんが、誰かがEXTR_REFS抽出型フラグを指摘しました。

PHPコード(5.3.2)のローカルバージョンを見ると、の関数定義がextract()参照渡しを示していないことがわかります。

function extract (array $var_array, $extract_type = null, $prefix = null)

sort()定義を見ると、参照によるパスが示されています。

function sort (array &$array, $sort_flags = null)

extract()これが、厳密なエラーが発生せず、に表示される理由ですsort()

php.netのドキュメントが古くなっているか、まったく間違っていると思います。 extract()は古い子犬です...その日の昔、関数の定義が実際に示されたのかどうかはわかり&$var_arrayません。

もう1つのオプションは、ある時点で関数定義が台無しになり、EXTR_REFSの追加の型フラグがあることに基づいて、ドキュメントに正しく示されている場合があります(この定数はまだ存在します)。

于 2012-12-31T18:51:57.727 に答える