当我迭代文件夹结构时 –
$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();
}