--TEST-- SPL: RecursiveIteratorIterator and begin/endIteration() --FILE-- rewind(); foreach($it as $v) echo "$v\n"; var_dump($it->valid()); echo "===MANUAL===\n"; $it->rewind(); while($it->valid()) { echo $it->current() . "\n"; $it->next(); break; } $it->rewind(); while($it->valid()) { echo $it->current() . "\n"; $it->next(); } ?> ===DONE=== --EXPECT-- MyRecursiveIteratorIterator::beginIteration() 1 2 31 32 331 4 MyRecursiveIteratorIterator::endIteration() ===MORE=== MyRecursiveIteratorIterator::beginIteration() 1 2 31 32 331 4 MyRecursiveIteratorIterator::endIteration() ===MORE=== MyRecursiveIteratorIterator::beginIteration() 1 2 31 32 331 4 MyRecursiveIteratorIterator::endIteration() bool(false) ===MANUAL=== MyRecursiveIteratorIterator::beginIteration() 1 1 2 31 32 331 4 MyRecursiveIteratorIterator::endIteration() ===DONE===