尽我所能,让我无法了解IteratorIterator类的实际作用。我知道类可以实现Traversable,因此引擎知道它可以使用foreach 和循环。
以PDOStatement类为例;如何实现标准的Iterator方法(下一个,键,后退等)以允许在PDOStatement上进行迭代?
抱歉,如果我的问题不清楚,我只是在努力理解此类的确切原因,而关于该类的文档却很少。
谢谢,
将要
更新:通过phpt文件,我发现了一个使用IteratorIterator的测试:
<?php
$root = simplexml_load_string('<?xml version="1.0"?>
<root>
<child>Hello</child>
<child>World</child>
</root>
');
foreach (new IteratorIterator($root->child) as $child) {
echo $child."\n";
}
?>
预期的输出是:
Hello
World
我并不真正了解IteratorIterator构造如何以$ root-> child作为参数,以及它如何管理子元素。
最佳答案
基于this,我认为它可以迭代Iterated对象。 IE。您可以拉出主对象中的其他对象,并在主对象上使用IteratorIterator,还可以迭代子对象。
更新:根据您的更新。这对我来说很有意义,尽管只有一个根对象,所以在本示例中对其进行迭代实际上并不适用,但是如果有更多根对象,则可以这样做。换句话说,我相信IteratorIterator与嵌套的foreach循环相同,而不必知道每个对象的所有元素。换句话说,使用面向对象的对象嵌套的foreach ...有一个多余的语句。 :-)
关于php - PHP IteratorIterator类如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1366925/