循环遍历PHP对象成员并为成员分配值

时间:2011-09-13 11:19:55

标签: php oop

我知道我可以循环访问PHP对象并获取其成员的值,如下所示:

class MyObject {

    public $one = 1;
    public $two = 2;
    public $three = 3;

    function getMemberValues() {
        foreach($this as $memb => $value) {
            echo $value." ";
        }
    }
}
$o = new MyObject();
$o->getMemberValues();
// prints 1 2 3

但我想要做的是遍历成员并为每个成员分配一个值。

我无法弄清楚它的语法。

$this[$memb] = 111;

不起作用,因为你得到了

Cannot use object of type MyObject as array 

错误,

$this->$memb

显然无效。

这可能吗?

非常感谢

4 个答案:

答案 0 :(得分:2)

是的,$this->$memb有效。

您可以分配到这样的属性:

$memb = 'one';
$this->$memb = 1;

这也适用于功能,这是 documented here

答案 1 :(得分:1)

  

     

$这 - > $ MEMB

     

显然无效。

你试过吗?它对我来说看起来非常有用。

foreach ($this as $memb => $val) {
    $this->$memb = 'toto';
}

上面的代码应该可以正常运行。

答案 2 :(得分:0)

也许

function getMemberValues() {
    foreach($this as &$value) {
        $value = $newval;
    }
}

答案 3 :(得分:0)

http://php.net/manual/en/function.get-object-vars.php

function getMemberValues() 
{
  echo implode(' ', get_object_vars($this));
}