变量中名称请求的数组不起作用

时间:2015-05-08 18:05:42

标签: php arrays variables undefined

我在对象中有数组,在变量中有他的名字。当我请求$ object-> $ propertyWithArrayName时它的返回数组很好但是当我想从这个数组获取索引值时它不起作用。

代码:

class Foo {
    public $bar;

    public function __construct() {
        $this->bar = array("A" => "a", "B" => "b");
    }
}

$test = new Foo();
$propertyName = "bar";
var_dump($test->$propertyName); // ok
var_dump($test->$propertyName["A"]); // doesn't work

第二个var_dump引发Warning: Illegal string offset 'A'Notice: Undefined property: Foo::$b

为什么它不起作用?

1 个答案:

答案 0 :(得分:2)

$propertyName是一个字符串而不是一个数组,所以要使用字符串作为名称来获取数组,你需要使用花括号{ }消除歧义:

var_dump(
    $test->{$propertyName}["A"]
);