1

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

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

4

1 回答 1

5

PHP 迭代器本质上是一个可搜索的对象。它的主要特性是它foreach具有出色的色彩,并且表现得完全符合它的要求。而不是做类似的事情:

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

您可以创建一个迭代器(Seekable、Rewindable 等)来简化工作,并在其中绑定您可能想要的任何其他内容,让您只做一次工作。

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

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

非常简单的结构,只是因为它是一个 SPL 接口而令人期待。实际上,它的唯一目的是让您的对象通过foreach. 不多也不少。您可以将它们用于各种各样的东西——我最近使用了一个来简化循环遍历从 IMAP 服务器产生的消息的过程(并确保我只进行了一次处理)。

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

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

于 2013-03-28T11:32:51.547 回答