有人可以解释我PHP Iterator吗?

时间:2013-03-28 11:23:21

标签: php iterator

我试图通过这个官方页面上的示例来概述并理解PHP Iterator。有人可以向我解释一下吗?至于它用于什么以及如何计算结果如页面所示。​​

PHP Iterator的链接:http://php.net/manual/en/class.iterator.php

1 个答案:

答案 0 :(得分:5)

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. 移至下一个对象
  5. GOTO第2步
  6. 非常简单的结构,只是因为它是一个SPL接口。实际上,它的唯一目的是允许您的对象通过foreach。没有更多,没有更少。你可以将它们用于各种各样的东西 - 我最近使用了一个来简化从IMAP服务器产生的消息的循环过程(并确保我只进行了一次处理)。

    在PHP中已经定义了一些迭代器 - 我最喜欢的可能是RecursiveDirectoryIterator,这大大减轻了必须递归遍历目录的负担。

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