首页 / PHP / php55新增特性yield生成器
php55新增特性yield生成器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php55新增特性yield生成器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1401字,纯文字阅读大概需要3分钟。
内容图文
php官方文档 yield http://php.com/manual/zh/language.generators.overview.php参考:http://laravelacademy.org/post/4317.html
生成器提供了一种更容易的方法来实现简单的对象迭代,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低。
生成器允许你在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组, 那会使你的内存达到上限,或者会占据可观的处理时间。相反,你可以写一个生成器函数,就像一个普通的自定义函数一样, 和普通函数只返回一次不同的是, 生成器可以根据需要 yield 多次,以便生成需要迭代的值。
$length = 1000000;
//生成器foreach (yieldTest($length) as$v1) {
echo$v1;
}
functionyieldTest($length) {for($i = 0; $i < $length; $i++) {
yield$i . 'Camel';
}
}
/*
迭代器
以下的代码会抛出错误:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 72 bytes) in /var/www/test/90/yield/demo01.php on line 38
*/foreach(iteratorTest($length) as$v2) {
echo$v2;
}
functioniteratorTest($length) {$data = [];
for($i = 0; $i < $length; $i++) {
$data[] = $i . 'Camel';
}
return$data;
}
如果要使用特定方式计算大量数据,如操作Excel表数据,对性能影响更甚。此时我们可以使用生成器,即时计算并产出后续值,不占用宝贵的内存空间,使用的内存更少。
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('').text(i)); }; $numbering.fadeIn(1700); }); });以上就介绍了 php55新增特性yield生成器,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
内容总结
以上是互联网集市为您收集整理的php55新增特性yield生成器全部内容,希望文章能够帮你解决php55新增特性yield生成器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。