Что означает этот синтаксис '$ {$ key} = $ val' внутри цикла в PHP? - PullRequest
4 голосов
/ 11 ноября 2011

Пора перестать искать просто спросить. Я не могу найти ответ в Интернете для моей жизни. В любом случае, я просматриваю чужой код, и у них есть этот синтаксис внутри цикла, и я точно не уверен, что происходит.

foreach($params as $key => $val) {
    ${$key} = $val
}

Я не понимаю $ {$ key}.

Ответы [ 4 ]

4 голосов
/ 11 ноября 2011

Это называется переменные переменные . В вашем цикле код установит для переменной, имя которой $key, значение $val.

Петлю можно заменить на extract().

3 голосов
/ 11 ноября 2011

По сути, это то, что делает extract():

$params = array('a' => 'foo', 'b' => 'bar');

foreach($params as $key => $val) {
    ${$key} = $val
}

echo $a; // outputs 'foo'
echo $b; // outputs 'bar'
1 голос
/ 11 ноября 2011

Это называется переменными http://php.net/manual/en/language.variables.variable.php. Если $key = 'test', то ${$key} === $test. И поэтому результат будет $test = $val.

1 голос
/ 11 ноября 2011

Это присваивает все пары ключ-значение в массиве фактическим переменным.

${$key} вычисляется дважды.Он принимает $key для этого значения и переводит его в строку.Таким образом, если бы $key было строкой 'foo', тогда последняя выполняемая операция была бы $foo = $val.

...