迭代器中的第 n 个元素


nth element in iterator

当我迭代文件夹结构时 –

$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));

– 有没有办法直接获取生成的迭代器($it)中的第 n 个元素,即无需循环也无需先将其转换为数组(例如使用 iterator_to_array() )?

由于这似乎是您正在寻找的答案,因此将我的评论重新发布为答案:

由于迭代器很可能是一个生成器(任何构成其数据的东西,而不仅仅是迭代内存中的某些东西):不,你不能直接跳转到特定的"索引"。您必须迭代迭代器才能到达所需的特定数据。

你可以

用一个while循环以及next()valid()方法来做到这一点。只需使用计数器并转到下一个元素,直到您击中所需的元素。最后,您只需要确保它仍然是一个有效的位置。

$element = 3;
$elementCount = 0;
$it->rewind();
while($elementCount < $element) {
    $it->next();
    $elementCount++;
}

if($it->valid())
    echo $it->current();
}