php迭代器iterator怎么用?

看到很多框架底层都在使用iterator或者spl中的一些其他迭代器, 感觉foreach不就行么, 为啥用什么迭代器, 不知道用迭代器的好处是啥

阅读 3.4k
2 个回答
新手上路,请多包涵

说个使用场景,上家公司用的kohana框架,他的model是继承了迭代器,接手其他同事做的一个功能,导出excel,线上报bug,有时提醒timeout,有时提醒服务器内存用尽,看了他们的代码之后,首先是优化他们的sql,减少数据量,考虑后期数据还是会增加,使用orm获取sql的描述资源,再使用iterator,逐条写入excel(具体实现方式,看iterator方法),一次获取,永久使用,时间换空间的一个小例子

使用foreach 与使用迭代器,并不冲突
迭代器可以使用在:
1、使用返回迭代器的包或库时(如PHP5中的SPL迭代器)
2、无法在一次的调用获取容器的所有元素时
3、要处理数量巨大的无素时(数据库中的表以GB计的数据)
迭代器还可以用来构造一些数据结构。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题