是时候停止搜索一个公正的问题了。我无法在网上找到我的生活答案。无论如何,我正在浏览别人的代码,他们在循环中有这种语法,我不确定到底发生了什么。
foreach($params as $key => $val) {
${$key} = $val
}
这是我不理解的$ {$ key}。
答案 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
。