2011-09-13 108 views
0

我知道我可以遍歷一個PHP對象並獲取它的成員的值,像這樣:循環通過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 

顯然是無效的無論是。

這可能嗎?

非常感謝

+0

出於興趣;你爲什麼想這樣做?這聽起來不像是類對象的典型用法。 –

+4

'$ this - > $ memb = $ value;'應該工作得很好。 –

+0

道歉'$ this - > $ memb = 111'確實很好。我甚至沒有嘗試過,因爲我認爲這是行不通的。一旦您有機會閱讀此評論,我將刪除此問題。 – Joe

回答

2

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

可以分配給屬性是這樣的:

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

這也適用於功能,這是documented here

1

$此 - > $ MEMB

顯然是無效的無論是。

你試過了嗎?它看起來對我完全有效。

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

上面的代碼應該完美地工作。

0

也許

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