ちょうど尋ねるのを止める時間です。私は私の人生のためにオンラインで答えを見つけることができません。とにかく、私は他の誰かのコードを使っています。ループ内にこの構文があり、何が起こっているのか正確にはわかりません。
foreach($params as $key => $val) {
${$key} = $val
}
これは私が理解できない$ {$ key}です。
ちょうど尋ねるのを止める時間です。私は私の人生のためにオンラインで答えを見つけることができません。とにかく、私は他の誰かのコードを使っています。ループ内にこの構文があり、何が起こっているのか正確にはわかりません。
foreach($params as $key => $val) {
${$key} = $val
}
これは私が理解できない$ {$ key}です。
これは、配列内のすべてのキーと値のペアを実際の変数に割り当てています。
${$key}
は2回評価されます。その値には$key
が使用され、それを文字列に評価します。したがって、$key
が文字列 'foo'だった場合、最終的な操作は$foo = $val
になります。
これはvariable variablesと呼ばれます。ループでは、コードはという名前の変数を$val
に設定します。
ループをextract()
に置き換えることができました。
これは可変変数http://php.net/manual/en/language.variables.variable.phpと呼ばれます。 $key = 'test'
の場合は${$key} === $test.
ですので、結果は$test = $val
になります。
これは本質的にextract()
が何を行います。マニュアルのリンクについて
$params = array('a' => 'foo', 'b' => 'bar');
foreach($params as $key => $val) {
${$key} = $val
}
echo $a; // outputs 'foo'
echo $b; // outputs 'bar'
+1 – megaflop