php yield使用
在循环一个大数组的时候yield非常好用能节省内存.
比如有个大文件需要读取并处理,如果全部读出来太耗费内存,就可以这样做
<?php function getRows($file) { $handle = fopen($file, 'rb'); var_dump("------"); if ($handle === false) { throw new Exception(); } while (feof($handle) === false) { yield fgetcsv($handle); } } foreach (getRows('data.csv') as $row) { var_dump($row); }
data.csv内容如下
1,2,3 101,202,303 111,222,333
运行结果如下:
string(6) "------" array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" } array(3) { [0]=> string(3) "101" [1]=> string(3) "202" [2]=> string(3) "303" } array(3) { [0]=> string(3) "111" [1]=> string(3) "222" [2]=> string(3) "333" }
这东西返回的结果是可遍历的,给循环用非常合适.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析