我试图通过这个官方页面上的示例来概述并理解PHP Iterator。有人可以向我解释一下吗?至于它用于什么以及如何计算结果如页面所示。
PHP Iterator的链接:http://php.net/manual/en/class.iterator.php
答案 0 :(得分:5)
PHP Iterator本质上是一个可搜索对象。它的主要特征是它穿过foreach
的飞行颜色,并且表现得非常正常。而不是做类似的事情:
foreach (myFunction() as $v) {
doSomethingWith($v);
}
您可以创建一个Iterator(Seekable,Rewindable等)来简化工作,并绑定您可能需要的任何其他内容,这样您就可以只执行一次。
创建Iterator对象并调用foreach ($object as $r)
执行以下操作(按顺序):
$object->rewind()
)$object->valid()
有效,如果需要则终止循环$object->current()
和$object->key()
返回当前项和密钥,然后使用$object->next()
非常简单的结构,只是因为它是一个SPL接口。实际上,它的唯一目的是允许您的对象通过foreach
。没有更多,没有更少。你可以将它们用于各种各样的东西 - 我最近使用了一个来简化从IMAP服务器产生的消息的循环过程(并确保我只进行了一次处理)。
在PHP中已经定义了一些迭代器 - 我最喜欢的可能是RecursiveDirectoryIterator
,这大大减轻了必须递归遍历目录的负担。
希望这有帮助。有任何问题,请随意评论,我会详细说明。