I'd like to see some language level changes, for example array notation that can be chained along with methods
Nah, pointers ftw!
*($object->returnsAnArray() + $n);
Or maybe stipulate that adding an integer $n to an array returns the element at the index $n 😃
$object->returnsAnArray() + 0;
But yeah, I think that $object->returnsAnArray()[0] should arguably be allowed. "Arguably", since there is a case to be made for returning an ArrayIterator (or ArrayAccess) instead, and then writing:
$object->returnsAnArrayIterator()->offsetGet($n);
Actually, if SeekableIterator's seek() returned a seekable iterator instead of void, we could write:
$object->returnsASeekableIterator()->seek($n)->current();