【发布时间】:2013-05-06 22:04:32
【问题描述】:
我遇到了访问/更改变量的需要:
$this->{$var}
上下文与 CI 数据映射器获取规则有关。我似乎找不到这种语法的实际作用。 { 在这种情况下做了什么?
你为什么不能直接使用:
$this->var
【问题讨论】:
标签: php
我遇到了访问/更改变量的需要:
$this->{$var}
上下文与 CI 数据映射器获取规则有关。我似乎找不到这种语法的实际作用。 { 在这种情况下做了什么?
你为什么不能直接使用:
$this->var
【问题讨论】:
标签: php
这是一个变量,因此您最终会得到$this->{value-of-$val}。
见:http://php.net/manual/en/language.variables.variable.php
例如:
$this->a = "hello";
$this->b = "hi";
$this->val = "howdy";
$val = "a";
echo $this->{$val}; // outputs "hello"
$val = "b";
echo $this->{$val}; // outputs "hi"
echo $this->val; // outputs "howdy"
echo $this->{"val"}; // also outputs "howdy"
这当然是在类上下文中工作的。您可以像这样在本地上下文中轻松使用变量变量:
$a = "hello";
$b = "hi";
$val = "a";
echo $$val; // outputs "hello"
$val = "b";
echo $$val; // outputs "hi"
【讨论】:
$object->attr = $object->{"attr"} :)
$this->$val 的事情,但惨遭失败。很高兴看到这个答案。
$。给定以下代码$foo=1; $bar="foo",$$bar 为 1。
首先$this->{$var} 和$this->var 是两个非常不同的东西。后者将请求var 类变量,而另一个将请求包含在$var 字符串中的变量的名称。如果$var 是字符串'foo' 那么它将请求$this->foo 等等。
这对于动态编程很有用(当您只在运行时知道变量的名称时)。但是字符串上下文中的经典{} 表示法非常强大,尤其是当你有奇怪的变量名时:
${'y - x'} = 'Ok';
$var = 'y - x';
echo ${$var};
将打印 Ok,即使变量名称 y - x 由于空格和 - 字符而无效。
【讨论】: