3v4l.org

run code in 300+ PHP versions simultaneously
<?php $iterator = new class implements \Iterator { private $values = [1, 2, 3]; private $key; public function current() { return current($this->values); } public function next() { next($this->values); } public function key() { return $this->key; } public function valid() { return current($this->values) !== false; } public function rewind() { echo "Rewinding\n"; reset($this->values); } }; $generator = (function () { yield 1; yield 2; yield 3; })(); $wrappedIterator = (function($iterator) { foreach ($iterator as $value) { yield $value; } })($iterator); function skipOne(\Iterator $iterator) { $iterator->next(); echo "Skipped one\n"; yield from $iterator; } echo "\nUsing skipOne(iterator):\n"; foreach (skipOne($iterator) as $value) { var_dump($value); } echo "\nUsing skipOne(generator):\n"; foreach (skipOne($generator) as $value) { var_dump($value); } echo "\nUsing skipOne(wrappedIterator):\n"; foreach(skipOne($wrappedIterator) as $value) { var_dump($value); } echo "\nUsing foreach(iterator):\n"; foreach($iterator as $value) { var_dump($value); }

preferences:
23.76 ms | 407 KiB | 5 Q