访问具有可变属性名称的数组属性成员

时间:2014-05-08 12:35:23

标签: php

在类方法的上下文中,使用什么语法来使用变量属性名来获取数组成员的值?

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(不使用中间变量)?

2 个答案:

答案 0 :(得分:1)

return $this->$PropName[$KeyName];

这是正确的方法,您唯一需要做的就是描述$PropName变量结束的位置(即它是$PropName还是{{ 1}})。为此,请使用:

$PropName[$KeyName]

答案 1 :(得分:1)

$ Propname不是$ this的属性,但是MyFunction()中的局部变量尝试:

return $this->{$PropName}[$KeyName];