PHP生成器类

2023年 8月 29日 60.7k 0

PHP生成器类

简介

使用循环结构(例如foreach)遍历大量数据将需要大量内存和相当长的处理时间。使用生成器可以迭代一组数据而无需这些开销。生成器函数与普通函数类似。然而,generator 并不是函数中的 return 语句,而是使用 yield 关键字来重复执行,以便提供要迭代的值。

yield 关键字是生成器机制的核心。尽管它的用法看起来与 return 类似,但它不会停止函数的执行。它提供迭代的下一个值并暂停函数的执行。

语法

Generator implements Iterator {
/* Methods */
public current ( void ) : mixed
public getReturn ( void ) : mixed
public key ( void ) : mixed
public next ( void ) : void
public rewind ( void ) : void
public send ( mixed $value ) : mixed
public throw ( Throwable $exception ) : mixed
public valid ( void ) : bool
public __wakeup ( void ) : void
}

登录后复制

方法

public Generator::current ( void ) − mix — 获取生成的值

public Generator::getReturn ( void ) : mix — 获取生成器的返回值

public Generator::key ( void ) − mix — 获取生成值的键。

p>

public Generator::next ( void ) − void — 恢复生成器的执行。与使用 NULL 作为参数调用 Generator::send() 的效果相同。

public Generator::rewind ( void ) − void — 倒回迭代器。如果迭代已经开始,这将引发异常。

public Generator::send (mixed $value) : mix - 将给定值作为当前yield表达式的结果发送到生成器并恢复生成器。

public Generator::throw ( Throwable $exception ) − mix — 将异常抛出到生成器中并恢复生成器的执行。

public Generator::valid ( void ) − bool — 检查迭代器是否已关闭

public Generator::__wakeup ( void ) − void — 由于生成器无法序列化而引发异常。

Generator 类实现 Iterator 接口。生成器对象不能通过 new 实例化。任何具有yield关键字的用户定义函数都会创建生成器类的对象。

生成器示例

由于生成器实现了Iterator接口,因此每个循环都可以用于遍历生成值。

 现场演示

登录后复制

输出

上述程序显示以下输出

1 4 9 16 25

登录后复制

以下示例使用生成器类的 current() 和 next() 方法来遍历生成值。使用 valid() 方法检查循环条件。

示例

 实时演示

登录后复制

输出

上述程序显示以下输出

key: 0 value: 1
key: 1 value: 4
key: 2 value: 9
key: 3 value: 16
key: 4 value: 25

登录后复制

以上就是PHP生成器类的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论