PHP生成器简单实例

一般你在迭代一组数据的时候,需要创建一个数据,假设数组很大,则会消耗很大性能,甚至造成内存不足。

代码如下:

//Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in E:\php\test\index.php on line 5
range(1, 100000000);

PHP5.5实现了生成器,每当产生一个数组元素则用yield关键词返回,并且执行函数暂停,当执行函数next方法时,则会从上一次被yield的位置开始继续执行,如下例子,只会产生中间变量$i

代码如下:

function xrange($start, $limit, $step = 1) {
    for ($i = $start; $i <= $limit; $i += $step) {
        yield $i;
    }
}
 
foreach (xrange(1, 9, 1) as $number) {
    echo "$number ";
}

(0)

相关推荐

  • PHP命名空间(Namespace)简明教程

    这一特性在 PHP5.0x 时候就提出过,后来被取消并安排在 PHP6 中实现.而此次又再次"提前"到了 PHP5.3 发布,可见开发人员对其的重视以及谨慎的态度. 官方发布时说明文档的内容可能已过期(documentation maybe out dated),所以在这里简单的说明命名空间的用法:首先是声明一个命名空间,加入了新的关键字 namespace ,其应在类文件的开头 复制代码 代码如下: <?php   namespace Project::Module;    c

  • php命名空间学习详解

    1.什么是命名空间?命名空间是一种特殊的作用域,它包含处于该作用域下的标识符,同时它本身也是一种标识符.可以把命名空间与操作系统的目录对应起来.一个命名空间相当于一个目录,命名空间里的类,函数,常量,相当于目录里的文件.同一个目录(命名空间)里的文件名不能相同,但是不同的目录里可以有相同名字的文件.2.使用命名空间为了解决什么问题?解决名字冲突,比如定义了一个类,正好这个类与PHP内部的类或是include进来的一个类库里的类重名了.提高代码可读性,命名空间有一个别名功能,它可以帮你给一个长达十

  • PHP新特性详解之命名空间、性状与生成器

    本文主要跟大家介绍了关于PHP新特性之命名空间.性状与生成器的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 1.命名空间 命名空间是什么? 1).命名空间在PHP 5.3中被引入,类似于文件夹的功能.例如Symfony框架中的Request和Response,位于Symfony的命名空间下. 2).命名空间始终应该在<?php标签的下面一行. 3).PHP文件的命名空间和操作系统的物理文件系统不同,这是一个虚拟的概念,没有必要和文件系统的目录结构完全对应.虽然如此,绝大多数PHP

  • thinkphp命名空间用法实例详解

    本文实例讲述了thinkphp命名空间用法.分享给大家供大家参考,具体如下: 新版本(3.2)中采用命名空间的方式定义和加载类库文件,解决多个模块之间的冲突问题,并实现了更加高效的自动加载机制. 需要给类库定义所在的命名空间,命名空间的路径和类库文件的目录一致,就可以实现类的自动加载,例如Org\Util\File类的定义为 namespace Org\Util; class File { } 其所在的路径是ThinkPHP/Library/Org/Util/File.class.php,我们实

  • PHP中的命名空间详细介绍

    概述 PHP对于命名空间的支持,经历了一段艰难的旅程.幸运的是,PHP从5.3开始引入了命名空间.自从PHP引入了命名空间,PHP代码的适用结构也得到了大大的改善.许多编程语言早就有了命名空间的概念,相对于其他语言来说,PHP对于命名空间的支持,稍微有点晚了.不管如何,每一种新特性的引入都有其目的,和其他语言一样,PHP引入命名空间也主要是为了解决名字冲突的问题. 命名空间(namespace)的概念 复制代码 代码如下: 当在字符串中使用命名空间名字的时候,一定不要忘了转义\ 可以将命名空间想

  • PHP命名空间(Namespace)的使用详解

    对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀. 例:项目中有两个模块:article和message board,它们各自有一个处理用户留言的类Comment.之后我可能想要增加对所有用户留言的一些信息统计功能,比如说我想得到所有留言的数量.这时候调用它们Comment提供的方法是很好的

  • Python2随机数列生成器简单实例

    本文实例讲述了Python2随机数列生成器.分享给大家供大家参考,具体如下: #filename:randNumber.py import random while True: try: row=int(raw_input('Enter the rows:')) cols=int(raw_input('then Enter the cols:')) minNum=int(raw_input('then Enter the minNumber:')) maxNum=int(raw_input('t

  • PHP生成器简单实例

    一般你在迭代一组数据的时候,需要创建一个数据,假设数组很大,则会消耗很大性能,甚至造成内存不足. 复制代码 代码如下: //Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in E:\php\test\index.php on line 5 range(1, 100000000); PHP5.5实现了生成器,每当产生一个数组元素则用yield关键词返回,并且执行函

  • jquery实现无刷新验证码的简单实例

    1. 思路: 页面上的验证码图片是servlet,采用jquery实现异步校验信息 2. 所用到的文件 VerifyCodeServlet.java   --用于生成图片的servlet ResultServlet.java          --用于校验验证码正确性的servlet verifyCode.js                  --校验的js文件 jquery.js                         --jquery包里的源文件 verifyCode.jsp   

  • Java 实现随机验证码功能简单实例

    Java 实现随机验证码功能简单实例 现在许多系统的注册.登录或者发布信息模块都添加的随机码功能,就是为了避免自动注册程序或者自动发布程序的使用. 验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行提交操作的同时需要将图片上的字符同时提交,如果提交的字符与服务器session保存的不同,则认为提交信息无效.为了避免自动程序分析解析图片,通常会在图片上随机生成一些干扰线或者将字符进行扭曲,增加自动识别的难度. 在这里,我们使用servlet来实现随机验证码的实现.  实现代码: p

  • 纯Java实现数字证书生成签名的简单实例

    package com.ylsoft.cert; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.security.InvalidKeyException; import java.security.KeyPair; import java.security.KeyPairGenerator;

  • python列表生成器迭代器实例解析

    这篇文章主要介绍了python列表生成器迭代器实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 列表生成式 例如 有一个列表 a =[2,3,4,5] 需要将列表都加上1 #第一种方法 for i in map(lambda i:i+1,a) #第二种方法 for index,i in enumerate(a): a[index] +=1 print(a) #第三种,简单列表生成式 a = [i+1 for i in a] print(a

  • 把普通对象转换成json格式的对象的简单实例

    1.什么叫做JSON? JSON只是一种数据格式(它不是一种新的数据类型) var obj = {name: "中国", age: 5000};//->普通格式的对象 var jsonObj = {"name": "中国", "age": 5000};//->JSON格式的对象 (只要把普通对象的属性名用""(不能是'')包起来,这样的格式就是我们JSON格式的对象) var data = [

  • Angularjs中ng-repeat的简单实例

    Angularjs中ng-repeat的简单实例 第一个例子:使用ng-repeat最简单的例子 <html ng-app="myApp"> <head> <title>angularjs-demo</title> <script type="text/javascript" src="angular.min.js" charset="utf-8"></scri

  • Java实现一个小说采集程序的简单实例

    被标题吸引进来的不要骂我. 只是一个简单的实现,随手写了来下载一部喜欢的小说的.示例中的小说只是示例,不是我的菜. 使用了jsoup.挺好用的一个工具. 有需要的话,参考下自己改吧.挺简单的,是吧. 代码如下: package com.zhyea.doggie; import java.io.File; import java.io.FileWriter; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.n

  • 使用JS实现图片展示瀑布流效果(简单实例)

    不知大家有没有发现,一般的图片展示网站都会使用瀑布流效果,所谓的瀑布流 就是网站内的图片不会一下子全缓存出来,而是等你滚动到一定的距离的时候, 下面的图片才会继续缓存,并且图片也是随机出现的,只是宽度一样,高度并不 一样,高高低低就像瀑布一样,所以叫做瀑布流效果.下面我把代码给大家,大家 随便下几张图片试试. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&qu

随机推荐