$arrayIter = new ArrayIterator( array(1, 2) );
$iterIter = new IteratorIterator($arrayIter);
var_dump($iterIter->valid()); //false
var_dump($arrayIter->valid()); //true
如果我首先调用$iterIter->rewind(),则$iterIter->valid()为真。我很好奇为什么它需要调用 rewind() 。我想这是有充分理由的,但我原以为它会在内部迭代器所处的任何状态下简单地开始迭代,并将其作为在开始迭代之前回退的选项。
调用 next() 似乎也将其置于“有效”状态(尽管它前进到下一个位置,表明它之前位于第一个位置)。
$arrayIter = new ArrayIterator(array(1,2));
$iterIter = new IteratorIterator($arrayIter);
$iterIter->next();
var_dump($iterIter->valid());
同样,我很好奇为什么我需要调用 rewind(),尽管内部迭代器处于有效状态。