The InfiniteIterator class

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

简介

The InfiniteIterator allows one to infinitely iterate over an iterator without having to manually rewind the iterator upon reaching its end.

类摘要

InfiniteIterator extends IteratorIterator implements OuterIterator {
/* 方法 */
public __construct ( Iterator $iterator )
public next ( ) : void
/* 继承的方法 */
public IteratorIterator::next ( ) : void
public IteratorIterator::rewind ( ) : void
public IteratorIterator::valid ( ) : bool
}

Table of Contents

User Contributed Notes

vascowhite at gmail dot com 04-Jun-2013 01:54
It is important to realise that rewind() must be called on any iterator before using it or you may experience undefined behaviour, see example code and output here http://3v4l.org/rvNpU

See this bug report https://bugs.php.net/bug.php?id=63823&edit=2 for a fuller explanation.
Anonymous 16-Oct-2012 12:47
to loop through object keys and reset to the start, try this:
<?php

$obj
= new stdClass();
$obj->Mon = "Monday";
$obj->Tue = "Tuesday";
$obj->Wed = "Wednesday";
$obj->Thu = "Thursday";
$obj->Fri = "Friday";
$obj->Sat = "Saturday";
$obj->Sun = "Sunday";

$infinate = new InfiniteIterator(new ArrayIterator($obj));
foreach ( new
LimitIterator($infinate, 0, 14) as $value ) {
    print(
$value . PHP_EOL);
}

?>

will output:

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Can be useful when doing date operations or recurring events