function rewind()
    {
        echo "<ul>\n";
        parent::rewind();
    }
    function beginChildren()
    {
        echo str_repeat('  ', $this->getDepth()) . "<ul>\n";
    }
    function endChildren()
    {
        echo str_repeat('  ', $this->getDepth()) . "</ul>\n";
    }
    function valid()
    {
        if (!parent::valid()) {
            echo "<ul>\n";
            return false;
        }
        return true;
    }
}
$arr = array("a", array("ba", array("bba", "bbb"), array(array("bcaa"))), array("ca"), "d");
$obj = new RecursiveArrayIterator($arr);
$rit = new RecursiveArrayIteratorIterator($obj);
foreach ($rit as $k => $v) {
    echo str_repeat('  ', $rit->getDepth() + 1) . "{$k}=>{$v}\n";
}
?>
===DONE===
Ejemplo n.º 2
0
<?php

$count = 10;
class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
{
    function rewind()
    {
        echo "dummy\n";
    }
    function endChildren()
    {
        global $count;
        echo $this->getDepth();
        if (--$count > 0) {
            // Trigger use-after-free
            parent::rewind();
        }
    }
}
$arr = array("a", array("ba", array("bba", "bbb")));
$obj = new RecursiveArrayIterator($arr);
$rit = new RecursiveArrayIteratorIterator($obj);
foreach ($rit as $k => $v) {
    echo $rit->getDepth() . "{$k}=>{$v}\n";
}