php:动态访问数组中的元素,即object属性

时间:2015-03-03 22:40:15

标签: php

我有一个数组作为对象属性, $ obj-> _image = ['size'=> '10']; 并希望动态访问它,例如:(当然对象已初始化并存在,只是跳过以使帖子更短。 print $ obj-> _image ['size'] 工作应该如此。)

$obj->get('image','size');

public function get($item,$element = '') {

if (!empty($element)) $element = "['$element']";
    $item = "_$item$element";

return $this->$item;
}

但得到:未定义的属性:obj :: $ _ image ['size']

尝试使用{},$$ - 但看起来我错过了一些东西..

1 个答案:

答案 0 :(得分:0)

您的问题是您正在尝试访问属于数组的属性,因此您不能像执行此操作那样执行此操作。试试这个

class a
{

    private $_image = array("size" => 10);

    public function get($item, $element = '')
    {
        $prop = "_$item";
        if (property_exists(__CLASS__, $prop))
        {
            if (empty($element))
            {
                return $this->{$prop};
            }
            if(array_key_exists($element, $this->{$prop})){
                return $this->{$prop}[$element];
            }
        }
        throw new Exception("'$item' or '$element' don't exist");
    }

}

$a = new a;
echo $a->get("image", "size");

您的代码的问题是您的属性是一个数组,因此您首先需要访问数组$this->{"_$prop"},然后访问数组$this->{"_$prop"}[$el]中的元素