位置: 编程技术 - 正文

PHP5.5迭代生成器用法实例详解(迭代器,生成器)

编辑:rootadmin

推荐整理分享PHP5.5迭代生成器用法实例详解(迭代器,生成器),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php代码自动生成工具,php 生成opcode,php generate,php generate,php生成guid,php生成代码,php代码生成器,php 迭代器与生成器使用情景,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例讲述了PHP5.5迭代生成器用法。分享给大家供大家参考,具体如下:

PHP5.5引入了迭代生成器的概念,迭代的概念早就在PHP有了,但是迭代生成器是PHP的一个新特性,这跟python3中的迭代生成器类似,看看PHP5.5的迭代生成器如何定义。

注意关键字:yield,正是这个yeild关键字构建了一个迭代器,这个函数xrange跟以往的函数的不同之处就在这里。一般情况都是return一个值,而yield一个值就表示这是个迭代器,每循环一次这个迭代器就生成这个值,故名为迭代生成器,迭代生成器这个函数可以进行foreach循环,每次都产生一个值。

PHP5.5之前是通过定义类实现Iterator接口的方式来构造迭代器,通过yield构造迭代器将更加提升性能节省系统开销。

这种方法的优点是显而易见的.它可以让你在处理大数据集合的时候不用一次性的加载到内存中,甚至你可以处理无限大的数据流。

PHP5.5迭代生成器用法实例详解(迭代器,生成器)

如上面例子所示,这个迭代器的功能是生成从1到的数字,循环输出,那么使用以往的方式是生成好这1到的数字到数组中,将会十分占用内存,因为是事先就要生成好所有结果,而不是用的时候按需生成,也就是说调用xrange这个迭代器的时候,里面的函数还没有真正的运行,直到你每一次的迭代。

再看看PHP官网的例子:

这里的xrange是一个迭代,功能和range是一样的,如果使用range函数的话,那么函数内部实现会储存每个迭代的中间过程,即每个中间变量都有 个内存空间,那么首先程序使用的内存空间就大了,而且分配内存,回收内存都会导致程序的运行时间加长。但是如果使用上yield实现的xrange函数的 话,里面所有的中间变量都只使用一个内存$i,这样节省的时间和空间都会变小。

那么为什么yield会有这样的效果呢?联想到lua中的yield,这里就算是协程的概念了。在lua语言中,当程序运行到yield的时候,使用协程 将上下文环境记录住,然后将程序操作权归还到主函数,当主函数调用resume的时候,会重新唤起协程,读取yield记录的上下文。这样形成了程序语言 级别的多协程操作。php 5.5这里的yield也是同样的道理,当程序运行到yield的时候,当前程序就唤起协程记录上下文,然后主函数继续操作,只是php中没有使用如 resume一样的关键字,而是“在使用的时候唤起”协程。比如上例中的foreach迭代器就能唤起yield。所以上面的这个例子就能理解了。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

PHP Static延迟静态绑定用法分析 本文实例讲述了PHPStatic延迟静态绑定用法。分享给大家供大家参考,具体如下:PHP5.3以后引入了延迟静态绑定static,它是为了解决什么问题呢?php的继

PHP匿名函数和use子句用法实例 本文实例讲述了PHP匿名函数和use子句用法。分享给大家供大家参考,具体如下:下面方法输出的是helloworld$param1和$param2是闭包变量functiontest(){$param2='every

php常用图片处理类 本文为大家分享的php常用图片处理类,供大家参考学习,具体内容如下php/*已知问题:1.在图片缩放功能中,使用imagecreatetruecolor函数创建画布,并使用

标签: 迭代器,生成器

本文链接地址:https://www.jiuchutong.com/biancheng/292456.html 转载请保留说明!

上一篇:详解php中反射的应用(php反射的原理)

下一篇:PHP Static延迟静态绑定用法分析(php延迟静态绑定)

  • 加工企业税收优惠政策
  • 申报表货物及劳务是什么
  • 公司之间借款如何做账
  • 增值税专用发票抵扣期限
  • 汽车运输企业付给车主的运费算成本吗
  • 公司注销章要销毁吗
  • 应纳税所得额为什么要减去国债利息收入
  • 个体工商户开普票流程
  • 没经营的个体户营业执照怎么注销
  • 城建税纳税申报表
  • 社保基数与工资不符
  • 固定资产账面价值公式
  • 存货盘盈属于什么活动
  • 库存冲红是什么意思
  • 实收资本变更股东要交税吗
  • 开票给子公司的利息收入怎么做账?
  • 减免货款需要进项税额转出吗
  • 行政事业单位培训伙食补助报销规定
  • 国税一个月没报税罚款多少
  • 利润的计算方法数学
  • 海关进口需要什么手续
  • 预收房款如何申报缴纳增值税
  • 一般纳税人贸易公司每个月最低费用多少
  • 企业在开办期间发生的费用如何处理
  • 试营业期间的费用算不算开办费?
  • 地方教育附加什么时候交
  • 其他所得是什么意思
  • linux怎么操作
  • php连接mysql查询数据
  • 收到某公司的钱的会计分录
  • 超支福利费按什么计提
  • 控股公司的账务处理
  • php判断数据库是否连接成功
  • 跨区域预缴增值税是当月还是次月
  • 罚款支出可以抵扣所得税吗
  • ChatGPT强化学习大杀器——近端策略优化(PPO)
  • 不发工资可以交五险一金吗
  • 国际货运代理存在的必要性有哪些方面
  • 铝合金门窗行业利润率
  • 网购会计如何确认成本
  • 出口货物的报关时间为货物运抵海关
  • 进口货物如何支付外汇
  • 出口免抵额需要加交付地方附加税吗
  • 固定资产折旧的影响因素
  • 财务报表里的现金流量表括号是什么意思
  • 营业税金及附加计入什么科目
  • 销售明细账本怎么填写
  • 主营业务成本包括工资吗
  • 国有企业无偿划转股权缴纳印花税
  • 发给客户免费的短信
  • 外埠存款主要使用范围
  • 企业所得税审计调整分录
  • 政府会计制度之1613在建工程
  • 挂靠公司收的税费计入什么科目?
  • 预缴所得税会计分录怎么做东奥
  • 暂估入库产品销售结转成本
  • 销售产品收取的价款
  • 高新技术企业享受优惠时间
  • sql时间格式化大全
  • winxp关机立马自动重启
  • 电脑xp系统的设置在哪
  • linux做网卡绑定
  • linux源码安装软件的方法介绍
  • 粒子冲突
  • jquery自定义
  • me分析方法
  • 网页设计需要多少分辨率
  • django settings.py
  • angular keyup
  • 深入理解新发展理念
  • 陕西税务局稽查处处长
  • 深圳市财政上交广东省吗
  • 滴滴收入统计
  • 郑州地铁客服热线电话
  • 河南省地方税务局公告2017年第4号
  • 成都市武侯区税务局官网
  • 广西壮族自治区图书馆
  • 车辆购置税查询不到应征欠税信息,不能进行扣款操作
  • 2021年江苏省考常州职位表
  • 企业将持有的交易性金融资产售出,实际收到出售价款
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设