php 生成器 入门理解
来源:互联网 发布:七雄战记更新网络错误 编辑:程序博客网 时间:2024/05/21 17:48
概念太晦涩,看不懂,直接上例子:
问题:得到一个1-1000000的整数数组,然后用foreach遍历输出
如果没有生成器,这样做:
$arr=range(1,1000000);//这个函数最终会返回一个数组;
foreach ($arr as $key => $value) {//此时遍历的是整个放在内存中的数组 echo $key.'=>'.$value.'<br />'; //输出}//总结:由迭代器我们可以知道,foreach的时候,每次遍历都会操作内存中的数组的键值,改变指针指向等等,//遍历一次,操作一次数组,这样很耗费内存如果有生成器,这样做:
function xrange( $start , $limit , $step = 1 ) {//简单写一个range() for ( $i = $start ; $i <= $limit ; $i += $step ) { yield $i ; //yield会将当前值返回,而不是保存到数组中 }}foreach(xrange(1,1000000)as $key=>$value){//这里遍历时,遍历的是一个xrange的返回值(不是数组) echo $key.'=>'."$value".'<br />' ;//输出}//总结:foreach每次遍历,都会调用一次xrange函数,而每调用一次xrange函数,都能得到一个yield的返回值,//然后yield会将下一个值放到自己里面,等到foreach下次遍历yield会返回这个值,然后再将下一个值放到自己里面...//这就是yield,它使得foreach的时候可以不用每次遍历都操作内存中的数组,遍历的时候直接就有被遍历的值了,//不用再去操作数组然后再得到要被遍历的值至于其他相关高深内容,去查看手册和大神们的帖子吧!ps:yield想要生效,前提是php的版本>=5.5.0
0 0
- php 生成器 入门理解
- php入门微理解
- php入门理解一
- php生成器
- php生成器
- php 生成器
- php生成器
- PHP生成器
- 初识、理解生成器模式
- 对生成器的理解
- PHP扩展生成器
- PHP plist 生成器
- PHP二维码生成器
- PHP颜色随机生成器
- PHP生成器、闭包
- php之生成器
- php生成器使用总结
- php生成器使用总结
- JavaWeb实现文件上传下载功能实例解析
- 源码开放学ARM—DM9000网卡驱动
- 第八周拓展实践(1)小明借书
- 定点乘法运算之原码一位乘法
- Git 安装配置
- php 生成器 入门理解
- Struts2+Spring3+Hibernate4+Maven+EasyUI(1)
- 1
- gitlab利用webhook通知jenkins进行构建
- 并行计算—OpenMP—临界区critical
- YII2 jquery全选 反选 全不选 批量删除 分页
- ORA-27154
- HTML—链接
- 无法解析或打开软件包的列表或是状态文件问题的解决方案