在类方法的上下文中,使用什么语法来使用变量属性名来获取数组成员的值?
class {
private $aFruits=array('Apple'=>'Red','Banana'=>'Yellow','Orange'=>'Orange');
public function MyFunction(){
$PropName = 'aFruits';
$KeyName = 'Banana';
// Should be able to do something like:
// Expected result: 'Yellow'
return ${$this->$PropName}[$KeyName];
}
}
此语法:
return ${$this->$PropName}[$KeyName];
...虽然不太正确,因为它试图将$this->$PropName
转换为字符串以用作变量名。
此语法:
return $this->$PropName[$KeyName];
...尝试使用$PropName[$KeyName]
的值作为属性名称,这也是不正确的。
必须有一些方法让PHP首先评估$this->$PropName
,然后从resultign数组中获取$KeyName
(不使用中间变量)?
答案 0 :(得分:1)
return $this->$PropName[$KeyName];
这是正确的方法,您唯一需要做的就是描述$PropName
变量结束的位置(即它是$PropName
还是{{ 1}})。为此,请使用:
$PropName[$KeyName]
答案 1 :(得分:1)
$ Propname不是$ this的属性,但是MyFunction()中的局部变量尝试:
return $this->{$PropName}[$KeyName];