围绕成员变量的大括号在PHP中意味着什么?

时间:2012-11-04 07:04:25

标签: php

我想知道以下{}。 {}在这做什么? $ 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;
    }
}

2 个答案:

答案 0 :(得分: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()}";

答案 1 :(得分:0)

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

请查看此处的文档:http://php.net/manual/en/language.types.string.php#language.types.string.parsing.complex