本文实例讲述了php yield关键字功能与用法。分享给大家供大家参考,具体如下:
yield 关键字是php5.5版本推出的一个特性。生成器函数的核心是yield关键字。它最简单的调用形式看起来像一个return申明,不同之处在于普通return会返回值并终止函数的执行,而yield会返回一个值给循环调用此生成器的代码并且只是暂停执行生成器函数。
example #1 一个简单的生成值的例子
<?phpfunction gen_one_to_three() { for ($i = 1; $i <= 3; $i++) { //注意变量$i的值在不同的yield之间是保持传递的。 yield $i; }}$generator = gen_one_to_three();foreach ($generator as $value) { echo "$value\n";}?>
简单来说就是:yield
是仅仅是记录迭代过程中的一个过程值
补充示例:
示例2:
/** * 计算平方数列 * @param $start * @param $stop * @return generator */function squares($start, $stop) { if ($start < $stop) { for ($i = $start; $i <= $stop; $i++) { yield $i => $i * $i; } } el { 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
…
示例3:
//对某一数组进行加权处理$numbers = array(‘nike‘ => 200, ‘jordan‘ => 500, ‘adiads‘ => 800);//通常方法,如果是百万级别的访问量,这种方法会占用极大内存function rand_weight($numbers){ $total = 0; foreach ($nuapplyantmbers as $number => $weight) { $total += $weight; $distribution[$number] = $total; } $rand = mt_rand(0, $total-1); foreach ($dist百家讲坛百家姓ribution 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; }}
更多关于北师大版六年级上册数学期中试卷php相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《php数组(array)操作技巧大全》、《php基本语法入门教程》、《php运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家php程序设计有所帮助。
本文发布于:2023-04-06 09:05:10,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/64822f25e3ddb72f275a14cbd65da6db.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP yield关键字功能与用法分析.doc
本文 PDF 下载地址:PHP yield关键字功能与用法分析.pdf
留言与评论(共有 0 条评论) |