function beginChildren() { echo __METHOD__ . "(" . $this->getDepth() . ")\n"; parent::beginChildren(); } function endChildren() { echo __METHOD__ . "(" . $this->getDepth() . ")\n"; parent::endChildren(); } } $p = 0; $it = new RecursiveArrayIteratorIterator(new MyRecursiveArrayIterator(array("a", array("ba", array("bba", "bbb"), array(array("bcaa"), array("bcba"))), array("ca"), "d")), 2); foreach ($it as $k => $v) { if (is_array($v)) { $v = join('', $v); } echo "{$k}=>{$v}\n"; if ($p++ == 5) { echo "===BREAK===\n"; break; } } echo "===FOREND===\n"; $it->rewind(); echo "===CHECK===\n"; var_dump($it->valid()); var_dump($it->current() == "a"); ?> ===DONE===
<?php class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator { function rewind() { echo __METHOD__ . " called \n"; parent::rewind(); } function beginChildren() { echo __METHOD__ . " called \n"; } function endChildren() { echo __METHOD__ . " called \n"; } } $arr = array("a", array("ca")); $obj = new RecursiveArrayIterator($arr); $rit = new RecursiveArrayIteratorIterator($obj); echo "Rewind: \n"; $rit->rewind(); echo "\nNext:\n"; $rit->next(); $rit->next(); ?> ===DONE=== <?php exit(0);