是时候停止搜索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