3v4l.org

run code in 300+ PHP versions simultaneously
<?php class RewindableGenerator implements Iterator { private $rewound; private $iteratorConstructor; private $iterator; function __construct(callable $iteratorConstructor){ $this->iteratorConstructor = $iteratorConstructor; $this->rewind(); } function rewind(){ if(!$this->rewound){ $this->iterator = ($this->iteratorConstructor)(); $this->rewound = true; } } function next(){ $this->iterator->next(); $this->rewound = false; } function valid(){ return $this->iterator->valid(); } function key(){ return $this->iterator->key(); } function current(){ return $this->iterator->current(); } } function test(){ yield 0; yield 1; yield 2; yield 3; yield 4; } function baz(){ return new RewindableGenerator('test'); } $gen = baz(); echo $gen->current() . " 0\n"; $gen->next(); echo $gen->current() . " 1\n"; $gen->next(); echo $gen->current() . " 2\n"; $gen->next(); echo $gen->current() . " 3\n"; echo "rewind\n"; $gen->rewind(); echo $gen->current() . " 0\n"; $gen->next(); echo $gen->current() . " 1\n"; $gen->next(); echo $gen->current() . " 2\n";

This is an error 500

Value for `_results` contains invalid data `array`


preferences:
210.35 ms | 2405 KiB | 11 Q