有没有人可以向我解释,为什么key()
无法在for
循环中正常工作?
示例
$iterator = new \ArrayIterator(range(1,3));
for ($iterator->seek(0); $iterator->key() < 3; $iterator->next()) {
echo "{$iterator->key()} => {$iterator->current()}", PHP_EOL;
}
它返回无限循环,但如果我改变for
循环的第二个表达式:
$iterator->key() < 2
它不显示最后一个元素。任何人都可以解释原因吗?
我需要显示2个元素,在X上更改数组中的指针,然后显示3个元素,在Y上更改数组中的指针,然后显示2个元素......等等。
答案 0 :(得分:0)
您可以使用foreach
foreach ($iterator as $key => $value) {
// Do the things you gotta do here...
}
我猜你不是要求解决方案,你只想知道原因。正如其他人所解释的那样,一旦迭代器到达最后一个元素$iterator->key()
,null
就是< 3
并且将保持这种状态。