了解OuterIterator接口PHP

Dar*_*ric 5 php spl iterator

我正在尝试OuterIterator在类上实现接口,但不确定在该方法中使用什么getInnerIterator。我知道它应该返回一个Iterator,但是我不明白在什么情况下应该返回一个Iterator,InnerIterator尽管它已经具有Iterator接口的所有方法,那么为什么需要一个InnerIterator

我完全迷失了 OuterIterator

class myouterIterator implements OuterIterator 
{
    /**
    * Returns the inner Iterator for the current entry
    */
    public $data = array(1,2,3,4,5,6,7,8,9,10);
    public $position = 0;
    public function getInnerIterator()
    {
        // What code should be place here
    }
    public function rewind()
    {
        $this->position = 0;
    }
    public function valid()
    {
        return isset($this->data[$this->position]);
    }
    public function key()
    {
        return $this->position;
    }
    public function current()
    {
        return $this->data[$this->position];
    }
    public function next()
    {
        ++$this->position;
    }
}   

$OuterIt = new myouterIterator();
foreach($OuterIt as $key => $value)
{
    echo $key, ' ', $value, '<br>';

}
Run Code Online (Sandbox Code Playgroud)

Fab*_*ler 3

你为什么要实施OuterIterator?它的目的是“迭代迭代器”,但您的示例只是迭代标量值,为每个迭代器都有一个迭代器是没有意义的。

如果您想查看该OuterIterator接口的实际示例,请查看AppendIterator,它连续迭代多个迭代器。