【问题标题】:Can someone explain me PHP Iterator? [closed]有人可以解释一下 PHP 迭代器吗? [关闭]
【发布时间】:2013-03-28 11:23:20
【问题描述】:

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

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

【问题讨论】:

  • “请解释一下”不是问题。我们可以提供帮助,但你应该更具体,说出你不明白的地方。
  • @Voitcus:我无法理解它。不需要任何反对票。我已经明确提到"what is it used for and how are the results computed as shown on the page"
  • 好的,但我还没有投票给你。
  • @Voitcus:那么我很抱歉。 :)。

标签: php iterator


【解决方案1】:

PHP 迭代器本质上是一个可查找的对象。它的主要属性是它通过foreach 以鲜艳的色彩进行,并且完全按照它应该的方式运行。而不是做类似的事情:

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

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

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

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

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

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

希望这会有所帮助。有任何问题,欢迎评论,我会详细说明。

【讨论】:

  • 感谢您的解释。
猜你喜欢
  • 2015-10-28
  • 1970-01-01
  • 2018-05-09
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2016-09-28
相关资源
最近更新 更多