这个语法'$ {$ key} = $ val'在PHP中的含义是什么意思?

时间:2011-11-11 00:07:08

标签: php variables loops foreach

是时候停止搜索一个公正的问题了。我无法在网上找到我的生活答案。无论如何,我正在浏览别人的代码,他们在循环中有这种语法,我不确定到底发生了什么。

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

这是我不理解的$ {$ key}。

4 个答案:

答案 0 :(得分:4)

这称为variable variables。在您的循环中,代码会将名称为$key的变量设置为值$val

循环可以替换为extract()

答案 1 :(得分:3)

这基本上做了extract()所做的事情:

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

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

echo $a; // outputs 'foo'
echo $b; // outputs 'bar'

答案 2 :(得分:1)

它将数组中的所有键值对分配给实际变量。

${$key}评估两次。该值需要$key并将其计算为字符串。因此,如果$key是字符串'foo',那么最后的操作将是$foo = $val

答案 3 :(得分:1)

这称为变量变量http://php.net/manual/en/language.variables.variable.php。 如果是$key = 'test',那么${$key} === $test. 结果将是$test = $val