看到很多框架底层都在使用iterator或者spl中的一些其他迭代器, 感觉foreach不就行么, 为啥用什么迭代器, 不知道用迭代器的好处是啥
使用foreach 与使用迭代器,并不冲突
迭代器可以使用在:
1、使用返回迭代器的包或库时(如PHP5中的SPL迭代器)
2、无法在一次的调用获取容器的所有元素时
3、要处理数量巨大的无素时(数据库中的表以GB计的数据)
迭代器还可以用来构造一些数据结构。
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答669 阅读✓ 已解决
2 回答580 阅读✓ 已解决
说个使用场景,上家公司用的kohana框架,他的model是继承了迭代器,接手其他同事做的一个功能,导出excel,线上报bug,有时提醒timeout,有时提醒服务器内存用尽,看了他们的代码之后,首先是优化他们的sql,减少数据量,考虑后期数据还是会增加,使用orm获取sql的描述资源,再使用iterator,逐条写入excel(具体实现方式,看iterator方法),一次获取,永久使用,时间换空间的一个小例子