有人能解释一下PHP迭代器吗?


Can someone explain me PHP Iterator?

我试图通过这个官方页面上的例子得到一个概述和理解PHP迭代器。有人能给我解释一下吗?至于它的用途以及如何计算结果,如页面所示。

指向PHP迭代器的链接:http://php.net/manual/en/class.iterator.php

PHP Iterator本质上是一个可搜索的对象。它的主要特性是它能顺利地通过foreach,并且表现得很好。而不是像这样:

foreach (myFunction() as $v) {
   doSomethingWith($v);
}

你可以创建一个Iterator (Seekable, Rewindable等)来简化工作,还可以绑定任何你想要的东西,允许你只做一次工作。

创建一个Iterator对象并调用foreach ($object as $r)(按顺序)执行以下操作:

  1. 倒带迭代器(调用$object->rewind())
  2. 检查$object->valid()当前操作是否有效,如果需要终止循环
  3. 如果循环没有终止,使用$object->current()$object->key()返回当前项目和键,并使用$object->next()移动到下一个对象
  4. 进入第二步

非常简单的结构,只是因为它是一个SPL接口。实际上,它的唯一目的是允许您的对象通过foreach。不多不少。您可以将它们用于各种用途—我最近使用了一个来简化从IMAP服务器生成的消息的循环过程(并确保我只执行了一次处理)。

PHP中已经定义了一些迭代器——我最喜欢的可能是RecursiveDirectoryIterator,它极大地减轻了递归遍历目录的负担。

希望这有帮助。有任何问题,请随时评论,我会详细说明。