千家信息网

PHP生成器怎么用

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要为大家展示了"PHP生成器怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"PHP生成器怎么用"这篇文章吧。PHP生成器是什么?生成器是在
千家信息网最后更新 2025年01月21日PHP生成器怎么用

这篇文章主要为大家展示了"PHP生成器怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"PHP生成器怎么用"这篇文章吧。

PHP生成器是什么?

生成器是在 PHP 5.5 版本中添加的,它提供了一种简单的方法来遍历数据,而不需要在内存中构建数组。是不是有点疑惑?那举一个例子,展示使用生成器是一个好方式。

首先,创建一个 generator.php 文件,它将贯穿我们整个例子。创建文件之后,我们添加一段代码。

";}

我们可以在创建 generator.php 文件所在目录中快速启动一个内置的 PHP 服务器:

php -S localhost:8000

如果用浏览器打开 http://localhost:8000/generator.php ,我们应该看到这样的结果:

这段代码的自解释性并不是太好. 让我们稍微改动一下代码

";}

现在, 上面的这段代码能够生成的最大值是 PHP_INT_MAX (也就是 PHP 能够生成的最大值). 当我们这样修改后刷新浏览器,我们注意到这次有一些不一样. 这段生成器脚本抛出了一条 warning 信息 .

有点遗憾的是 PHP 耗尽了内存. 你能够想到的解决方法可能包括增加 php.ini 文件中 memory_limit 的上限. 不过平心而论,这个脚本既不高效又占用内存, 我们需要的是一个高效且占用内存低的脚本。

使用生成器

让我们在上面定义相同的函数,用相同的值 PHP_INT_MAX 调用它,然后再次运行。但是这一次我们将创建一个生成器函数。

";}

解析 getRange 函数,这次,我们只循环遍历值和 yield 输出。 yield 与返回值类似,因为它也是从函数返回一个值,但唯一的区别是 yield 只会在需要时返回一个值,并且不会尝试将整个数据集保留在内存中。

如果您转到浏览器,您应该会看到页面上显示的数据。给定适当的时间,浏览器最终显示数据。

注意: 生成器只能在函数中使用。

为什么要使用生成器

有时候,我们可能会遇到想要解析一个庞大的数据集(也可能是日志文件),也可能对一个大型数据库的结果集执行计算,等等情况。我们不想让这些数据全部加载到内存中。我们应该尽可能的保存相应的内存状态。数据不一定要很大--无论数据有多小,生成器都是有效的。别忘了,我们的目的是使用更少的内存来尽可能快的处理数据。

返回键值对

有时候,我们的数据是基于 key-value 时才更有说服力。使用生成器时,我们可能会生成下面这样的键值对。

 $value;    }}

然后,我们可以使用这个键值对,就像使用任意的数组一样。

 $value) {    echo "Dataset {$range} has {$value} value
";}

传递参数到生成器中

生成器也能接收传参。这意味这生成器允许我们向其中注入参数,作为一个命令或者其他作用。例如,我们向生成器发送一个值,让它停止执行或者修改输出结果。使用上面的 getRange 函数,我们可以实现这一点。

要发送注入这个值,我们可以这样做。

send('stop');    }    echo "Dataset {$range} 
";}

注意: 在生成器中使用 return ,会跳出生成器。

不要滥用生成器

虽然使用 PHP_INT_MAX 有点过了. 但对我来说, PHP_INT_MAX2147483647 也就是:

二十亿四千七百四十万四千八万三千六百四十七

生成器使内存使用更高效。但如果滥用,一样会造成内存相关的问题。

以上是"PHP生成器怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

生成 生成器 数据 内存 函数 文件 代码 浏览器 浏览 内容 篇文章 结果 脚本 最大 相同 也就是 例子 参数 尽可能 数组 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百度时代网络技术 北京 服务器托管规定 什么编写程序软件开发效率最高 网络安全电子小报资料 海西州网络技术厂家报价 数据库有上限吗 网络安全提示14个字 怀旧服服务器空间有多大 表式磁疗带-医疗器械广告数据库 无锡rpa软件开发公司 服务器百兆带宽下载速度多少 爱美客互联网科技有限公司 电脑上安装多个数据库怎么切换 代理服务器 扫描 富士康 软件开发 网络安全文明上网的黑板报 网络日志 网络安全法 网络安全战略公开课 河北数据库空投箱批量定制 提高网络安全素养讨论发言 共享服务器换ip重新连接 海西州网络技术厂家报价 数据库自查询比大小 宝山区网络软件开发常见问题 服务器百兆带宽下载速度多少 网络安全相关的小论文100字 如何在手机服务器中加光影 湘潭正规软件开发 数据库宣传标语 达拉特旗网络安全监察大队
0