public function next() { $prev = key($this->_data); $this->_valid = next($this->_data) !== false; $cur = key($this->_data); if (!$this->_valid && $cur !== $prev && $cur !== null) { $this->_valid = true; } return $this->_valid ? $this->offsetGet(key($this->_data)) : null; }