ArrayIterator的key()不能用于for循环吗?

时间:2016-08-03 11:28:36

标签: php

有没有人可以向我解释,为什么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个元素......等等。

1 个答案:

答案 0 :(得分:0)

您可以使用foreach

foreach ($iterator as $key => $value) {
    // Do the things you gotta do here...
}

我猜你不是要求解决方案,你只想知道原因。正如其他人所解释的那样,一旦迭代器到达最后一个元素$iterator->key()null就是< 3并且将保持这种状态。