0

我想知道下面的 { } 是什么。{ } 在这里做什么?$this->{$key} = $value;

提前致谢。

在一个文件中

$config['field']['calendar'] = array('type'=>'boolean');
$config['field']['category'] = array('type'=>'boolean');
$config['field']['customers'] = array('type'=>'boolean');  
...
$this->preference_form->initalize($config);

在 Preference_form.php

function initalize($config = array())
{
    foreach($config as $key => $value)
    {
        $this->{$key} = $value;
    }
}
4

2 回答 2

1

在这种情况下,它们是可选的,但这是一种让读者(和解析器)更清楚您指的是变量的方式。

http://www.php.net/manual/en/language.variables.variable.php

为了在数组中使用可变变量,您必须解决歧义问题。也就是说,如果您编写 $$a[1] 则解析器需要知道您是否打算使用 $a[1] 作为变量,或者您是否希望 $$a 作为变量,然后是 [1] 索引那个变量。解决这种歧义的语法是:${$a[1]} 用于第一种情况,${$a}[1] 用于第二种情况。

这种语法有用的另一种情况是在字符串中扩展函数调用时。

这不起作用(或者它会评估$someObj为字符串,然后附加->someFunc()

$myString = "$someObj->someFunc()";

但这符合您的预期:

$myString = "{$someObj->someFunc()}";
于 2012-11-04T07:09:45.127 回答
0

它正在转义变量表达式,以便可以动态设置成员。

看看这里的文档:http: //php.net/manual/en/language.types.string.php#language.types.string.parsing.complex

于 2012-11-04T07:08:56.623 回答