The indexes used in an ArrayAccess object are not limited to strings and integers as they are for arrays: you can use any type for the index as long as you write your implementation to handle them. This fact is exploited by the SplObjectStorage class.

Sadly you cannot assign by reference with the ArrayAccess (at least in PHP 5.3.23)It's too bad there is no syntax for optionally passing variables by reference to functions (a feature in retro PHP).That option would have let ArrayAccess fully mimic the functionality of normal array assignments: