3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Collection implements \ArrayAccess, \Iterator { private $_array = array(); public function __invoke() { return $this->_array; } public function offsetExists($offset) { return array_key_exists($offset, $this->_array); } public function offsetGet($offset) { return $this->_array[$offset]; } public function offsetSet($offset, $value) { $this->_array[$offset] = $value; } public function offsetUnset($offset) { unset($this->_array[$offset]); } public function current() { return current($this->_array); } public function key() { return key($this->_array); } public function next() { return next($this->_array); } public function rewind() { return reset($this->_array); } public function valid() { return !is_null(key($this->_array)); } } $a = new Collection(); $a['alpha'] = 'blah'; $a['beta'] = 'yada'; $a['gamma'] = 'woot'; var_dump(current($a)); var_dump(next($a));

preferences:
30.68 ms | 408 KiB | 5 Q