Hi, at first, read that bug report : http://bugs.php.net/bug.php?id=42065
I would like to say that it doesn't seem to be fixed as it's said. When I execute the bug 42065 test case, it still fails. In reality, another code brought me to that bug, please consider this : <?php class a { public $array = array('key'=>'2'); public function getArray() { return $this->array; } } $a = new a; $tab = $a->getArray(); $tab['key'] = 5; print_r($a); print_r($tab); Outputs : a Object ( [array] => Array ( [key] => 2 ) ) Array ( [key] => 5 ) No problem, that's expected. Now consider that : $a = new a; $tab = new ArrayObject($a->getArray()); $tab['key'] = 5; print_r($a); print_r($tab); Outputs : a Object ( [array] => Array ( [key] => 5 ) ) ArrayObject Object ( [key] => 5 ) So, the original array, inside the 'a' object has been modified, but it souldn't have. This behavior is like the one described in bug 42065 Plateform : Windows PHP : latest 5.2 snapshot - Apache SAPI. If you really want the original array not to be modified, you should act like this : $tab = new ArrayObject((array)$a->getArray()); Strange isn't it ?