<?php $arr = array(1, 2); $arrOb = new ArrayObject($arr); $recArrIt = new RecursiveArrayIterator($arrOb->getIterator()); class MyRecursiveIteratorIterator extends RecursiveIteratorIterator { function nextelement() { throw new Exception(); } } $recItIt = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD); var_dump($recItIt->next()); $recItIt = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY); var_dump($recItIt->next());
} $ar = array(1, 2, array(31, 32, array(331)), 4); $it = new MyRecursiveIteratorIterator(new ArrayObject($ar, 0, "RecursiveArrayIterator")); foreach ($it as $v) { echo "{$v}\n"; } echo "===MORE===\n"; foreach ($it as $v) { echo "{$v}\n"; } echo "===MORE===\n"; $it->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===