${$key} = $val'inside a loop在PHP中的意思是


What does this syntax '${$key} = $val' inside a loop mean in PHP?

是时候停止搜索just ask了。我在网上怎么也找不到答案。不管怎样,我正在检查别人的代码,他们在循环中有这种语法,我不确定到底发生了什么。

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

我不懂的是${$key}

这叫做变量变量。在循环中,代码将名称为$key的变量设置为值$val

循环可以用extract()代替

这实际上是extract()所做的:

$params = array('a' => 'foo', 'b' => 'bar');
foreach($params as $key => $val) {
    ${$key} = $val
}
echo $a; // outputs 'foo'
echo $b; // outputs 'bar'

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

${$key}被求值两次。它接受该值的$key,并将其计算为字符串。因此,如果$key是字符串'foo',那么最后要执行的操作将是$foo = $val

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