php中yield关键字的介绍

发布时间:2020-07-02 11:43:15 作者:Leah
来源:亿速云 阅读:148

这期内容当中小编将会给大家带来有关php中yield关键字的介绍,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1、什么yield?

该yield关键字从发电机函数返回数据:

生成器函数的核心是yield关键字。以最简单的形式,yield语句看起来很像return语句,yield不是停止函数的执行并返回,而是为循环生成器的代码提供一个值,并暂停生成器函数的执行。

2、什么是生成器函数?

生成器函数实际上是编写迭代器的一种更紧凑,更有效的方法。它允许您定义一个函数(您的xrange),该函数将

在 您遍历该函数时_计算并返回_ 值:

foreach (xrange(1, 10) as $key => $value) {
    echo "$key => $value", PHP_EOL;
}

这将创建以下输出:

0 => 1
1 => 2
…
9 => 10

您也可以控制$keyforeach使用

yield $someKey => $someValue;

在generator函数中,$someKey是您想要显示的内容$key$someValue是中的值$val。在问题的示例中为$i

3、与正常功能有何不同?

现在您可能想知道为什么我们不仅仅使用PHP的本机range函数来实现该输出。是的,你是。输出将是相同的。区别在于我们到达那里的方式。

当我们使用rangePHP,将执行它,在内存中创建一个数字的整个阵列,并return认为 整个阵列

的foreach循环,然后将去在它和输出的值。换句话说,foreachwill将对数组本身进行操作。该range功能和foreach唯一的“交谈”一次。可以将其想像为通过邮件获取包裹。送货员会把包裹交给您,然后离开。然后解开整个包装,取出里面的任何东西。

当我们使用生成器函数时,PHP将逐步进入该函数并执行,直到遇到结尾或yield关键字为止。当遇到a时yield,它将把当时的值返回外循环。然后,它返回到生成器函数,并从产生的地方继续。由于您xrange拥有一个for循环,它将执行并屈服直到$max达到。想像它foreach和发生器打乒乓球。

4、我为什么需要那个?

显然,生成器可用于解决内存限制。根据您的环境,执行range(1, 1000000)遗嘱会使您的脚本致命,而对生成器执行同样的操作会很好。或如Wikipedia所述:

由于生成器仅根据需要计算其屈服值,因此它们对于表示昂贵或无法立即计算的序列很有用。这些包括例如无限序列和实时数据流。

发电机也应该很快。但是请记住,当我们谈论快速时,我们通常会以很小的数目交谈。因此,在您开始运行并更改所有代码以使用生成器之前,请进行基准测试以了解在何处有意义。

生成器的另一个用例是异步协程。该yield关键字不仅返回值,但它也接受他们。有关此内容的详细信息,请参见下面链接的两个出色的博客文章。

5、从什么时候起可以使用yield?

生成器已在 PHP 5.5中

引入。尝试使用yield该版本之前的版本会导致各种解析错误,具体取决于关键字后面的代码。因此,如果您从该代码中遇到了解析错误,请更新您的PHP。

上述就是小编为大家分享的php中yield关键字的介绍了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. python中yield关键字怎么理解?
  2. 深入浅析Python中的yield关键字

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php yield %d

上一篇:Python变量定义和字符串

下一篇:android软件中自定义设置字体

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》