- var_dump: documentation ( source)
- reset: documentation ( source)
- next: documentation ( source)
- current: documentation ( source)
<?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);
}