PHP yield关键字功能与用法分析
本文实例讲述了PHPyield关键字功能与用法。分享给大家供大家参考,具体如下:
yield关键字是php5.5版本推出的一个特性。生成器函数的核心是yield关键字。它最简单的调用形式看起来像一个return申明,不同之处在于普通return会返回值并终止函数的执行,而yield会返回一个值给循环调用此生成器的代码并且只是暂停执行生成器函数。
Example#1一个简单的生成值的例子
简单来说就是:yield是仅仅是记录迭代过程中的一个过程值
补充示例:
示例2:
/** *计算平方数列 *@param$start *@param$stop *@returnGenerator */ functionsquares($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.‘squaredis‘.$square.‘
‘; }
输出:
3squaredis9
4squaredis16
5squaredis25
...
示例3:
//对某一数组进行加权处理 $numbers=array(‘nike‘=>200,‘jordan‘=>500,‘adiads‘=>800); //通常方法,如果是百万级别的访问量,这种方法会占用极大内存 functionrand_weight($numbers) { $total=0; foreach($numbersas$number=>$weight){ $total+=$weight; $distribution[$number]=$total; } $rand=mt_rand(0,$total-1); foreach($distributionas$num=>$weight){ if($rand<$weight)return$num; } } //改用yield生成器 functionmt_rand_weight($numbers){ $total=0; foreach($numbersas$number=>$weight){ $total+=$weight; yield$number=>$total; } } functionmt_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; } }
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。