$arrayIter = new ArrayIterator( array(1, 2) );
$iterIter = new IteratorIterator($arrayIter);
var_dump($iterIter->valid()); //false
var_dump($arrayIter->valid()); //true
Run Code Online (Sandbox Code Playgroud)
如果我先调用$ iterIter-> rewind(),则$ iterIter-> valid()为true.我很好奇为什么要调用rewind().我想它有充分的理由,但我希望它只是在内部迭代器处于的任何状态下开始迭代,并在开始迭代之前将其作为回退选项.
调用next()似乎也把它置于"有效"状态(虽然它前进到下一个位置,表明它先前处于第一个位置).
$arrayIter = new ArrayIterator(array(1,2));
$iterIter = new IteratorIterator($arrayIter);
$iterIter->next();
var_dump($iterIter->valid());
Run Code Online (Sandbox Code Playgroud)
同样,我很好奇为什么我需要调用rewind(),尽管内部迭代器处于有效状态.