PHP5.5新特性之yield理解与用法实例分析
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-04 09:54:26 浏览: 评论:0
这篇文章主要介绍了PHP5.5新特性之yield理解与用法,结合实例形式分析了php5.5 yield生成器功能、原理、使用方法及相关操作注意事项,需要的朋友可以参考下
本文实例讲述了PHP5.5新特性之yield理解与用法,分享给大家供大家参考,具体如下:
yield生成器是php5.5之后出现的,yield提供了一种更容易的方法来实现简单的迭代对象,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低。
yield生成器允许你 在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组。
使用示例:
- /**
- * 计算平方数列
- * @param $start
- * @param $stop
- * @return Generator
- */
- function squares($start, $stop) {
- if ($start < $stop) {
- for ($i = $start; $i <= $stop; $i++) {
- yield $i => $i * $i;
- }
- }
- else {
- for ($i = $start; $i >= $stop; $i--) {
- yield $i => $i * $i; //迭代生成数组: 键=》值
- }
- }
- }
- foreach (squares(3, 15) as $n => $square) {
- echo $n . 'squared is' . $square . '<br>';
- }
输出:
- 3 squared is 9
- 4 squared is 16
- 5 squared is 25
- ...
示例2:
- //对某一数组进行加权处理
- $numbers = array('nike' => 200, 'jordan' => 500, 'adiads' => 800);
- //通常方法,如果是百万级别的访问量,这种方法会占用极大内存
- function rand_weight($numbers)
- {
- $total = 0;
- foreach ($numbers as $number => $weight) {
- $total += $weight;
- $distribution[$number] = $total;
- }
- $rand = mt_rand(0, $total-1);
- foreach ($distribution as $num => $weight) {
- if ($rand < $weight) return $num;
- }
- }
- //改用yield生成器
- function mt_rand_weight($numbers) {
- $total = 0;
- foreach ($numbers as $number => $weight) {
- $total += $weight;
- yield $number => $total;
- }
- }
- function mt_rand_generator($numbers)
- {
- $total = array_sum($numbers);
- $rand = mt_rand(0, $total -1);
- foreach (mt_rand_weight($numbers) as $num => $weight) {
- if ($rand < $weight) return $num;
- }
- }
Tags: PHP5 5 yield
相关文章
- ·用实例分析PHP5异常处理(2013-11-13)
- ·php5的simplexml解析错误(2013-11-13)
- ·php5.3中php-fpm进程管理方式(2014-06-20)
- ·php-screw在php5.4.6中编译失败问题(2014-06-29)
- ·PHP5中哈希创建和验证方法详解(2014-08-22)
- ·PHP5.2.X防止Hash冲突拒绝服务攻击的Patch方法(2014-08-23)
- ·php5.3下使用php管理crontab计划任务(2014-08-27)
- ·解决php5.3不能连接mssql数据库问题(2014-09-10)
- ·php-fpm参数优化让你的php-fpm(php5.3+)网站跑得更快(2015-09-24)
- ·MAC通过MacPorts配置 PHP54+PHP FPM+NGINX+MYSQL5.5(2015-12-10)
- ·PHP5.5迭代生成器用法实例详解(2019-11-17)
- ·PHP5中实现多态的两种方法实例分享(2020-11-19)
- ·php5.4以下版本json不支持不转义内容中文的解决方法(2021-05-08)
- ·PHP5.5迭代生成器用法实例详解(2021-07-14)
- ·PHP5.2中PDO的简单使用方法(2021-07-21)
- ·php5.5使用PHPMailer-5.2发送邮件的完整步骤(2021-10-31)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)