umm looks like this flag will do the trick: ArrayObject::ARRAY_AS_PROPS
So the below code will work out nicely:
$array = array("key1" => "var1", "key2" => "var2");
$array_object = new ArrayObject($array, ArrayObject::ARRAY_AS_PROPS);
echo $array_object->key1;
echo $array_object->key2;
Guess problem is resolved. Although it seems that ArrayObject by default does not produce an iterator object automatically, still have to write another line:
$array_iterator = $array_object->getiterator();
to get this iterator. I understand why though, it is simply impossible to store this iterator as object property since all properties of an arrayobject must be elements in the corresponding array.