gpt4 book ai didi

php - PHP IteratorIterator 类是如何工作的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:08 26 4
gpt4 key购买 nike

尽我所能,我无法理解 IteratorIterator 类实际上做了什么。我知道类可以实现 Traversable 因此引擎知道它可以使用 foreach 循环我意识到 IteratorIterator 应该将 Traversable 的任何东西转换为 Iterator 但我一生都无法理解如何。

例如,PDOStatement类(class);如何实现标准迭代器方法(next、key、rewind 等)以允许对 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 ,我认为它允许您迭代迭代对象。 IE。您可以将其他对象拉入您的主对象并在您的主对象上使用 IteratorIterator,也可以迭代子对象。

更新:基于您的更新。这对我来说很有意义,虽然只有一个根对象,所以迭代它并不真正适用于这个例子,但如果有更多的根对象,你可以。换句话说,我相信 IteratorIterator 与嵌套的 foreach 循环相同,而不必知道每个对象的所有元素。换句话说,嵌套的 foreach 使用面向对象的对象......有一个冗余语句。 :-)

关于php - PHP IteratorIterator 类是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1366925/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com