PHP,$this->{$var} -- 这是什么意思?
2022-08-30 16:59:58
我遇到了访问/更改变量的需要,如下所示:
$this->{$var}
上下文是使用 CI 数据映射器获取规则。我似乎找不到这个语法实际上做了什么。在这种情况下,'s 做了什么?{
为什么不能只使用:
$this->var
我遇到了访问/更改变量的需要,如下所示:
$this->{$var}
上下文是使用 CI 数据映射器获取规则。我似乎找不到这个语法实际上做了什么。在这种情况下,'s 做了什么?{
为什么不能只使用:
$this->var
这是一个变量,因此您最终将得到 .$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"
首先,这是两件截然不同的事情。后者将请求类变量,而另一个将请求字符串中包含的变量的名称。如果 是字符串,那么它将请求等等。$this->{$var}
$this->var
var
$var
$var
'foo'
$this->foo
这对于动态编程很有用(当您仅在运行时知道变量的名称时)。但是字符串上下文中的经典表示法非常强大,特别是当你有奇怪的变量名称时:{}
${'y - x'} = 'Ok';
$var = 'y - x';
echo ${$var};
即使变量名称由于空格和字符而无效,也会打印出来。Ok
y - x
-