3v4l.org

run code in 300+ PHP versions simultaneously
<?php class IndexedArrayIterator implements Iterator { protected $data=array(); protected $keyIndex=array(); protected $reverseIndex=array(); protected $position=0; protected $startIndex=0; protected $endIndex=0; function __construct($source) { $this->data=$source; $this->reindex(); } function reindex() { // Reindexing is expensive, don't do it often // If you need to reindex every time you search, you loose the advantage // If you add elements, you must reindex $this->keyIndex = array_keys($this->data); $this->reverseIndex = array_flip($this->keyIndex); } function setStartKey($start) { $this->startIndex=$this->reverseIndex[$start]; } function setEndKey($end) { $this->endIndex=$this->reverseIndex[$end]; } ///// /// Iterator Interface // #[\ReturnTypeWillChange] public function rewind() { $this->position=$this->startIndex; } #[\ReturnTypeWillChange] public function current() { if($this->valid()) return $this->data[$this->key()]; else return NULL; } #[\ReturnTypeWillChange] public function key() { if($this->valid()) return $this->keyIndex[$this->position]; else return NULL; } #[\ReturnTypeWillChange] public function next() { ++$this->position; } #[\ReturnTypeWillChange] public function valid() { if($this->position > $this->endIndex) return FALSE; return isset($this->keyIndex[$this->position]); } } $iterator=new IndexedArrayIterator(array( 'one'=>'Item One', 'two'=>'Item Two', 'twoandhalf'=>'Item Two And Half', 'three'=>'Item Three', 'four'=>'Item Four', )); $iterator->setStartKey('two'); $iterator->setEndKey('three'); foreach($iterator as $key=>$value) { echo(''.$key.': '.$value."\r\n"); }
Output for 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.29, 8.2.0 - 8.2.20, 8.3.0 - 8.3.8
two: Item Two twoandhalf: Item Two And Half three: Item Three
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting '{' in /in/EP0fL on line 5
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.3.11, 4.4.0 - 4.4.1
Parse error: parse error, unexpected T_STRING, expecting '{' in /in/EP0fL on line 5
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `'{'' in /in/EP0fL on line 5
Process exited with code 255.

preferences:
312.34 ms | 401 KiB | 473 Q