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===