php yield是什么意思?-PHP问题

资源魔 35 0

php yield的意义是该yield要害字从发机电函数前往数据,yield语句看起来很像return语句,yield没有是中止函数的执行并前往,而是为轮回天生器的代码提供一个值,并暂停天生器函数的执行。

php yield的意义是:

一、甚么yield?

该yield要害字从发机电函数前往数据:

天生器函数的外围是yield要害字。以最简略的方式,yield语句看起来很像return语句,yield没有是中止函数的执行并前往,而是为轮回天生器的代码提供一个值,并暂停天生器函数的执行。

二、甚么是天生器函数?

天生器函数其实是编写迭代器的一种更松散,更无效的办法。它容许您界说一个函数(您的xrange),该函数将

正在 您遍历该函数时_较量争论并前往_ 值:

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

这将创立如下输入:

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

您也能够管制$key正在foreach应用

yield $someKey => $someValue;

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

三、与失常性能有何没有同?

如今您可能想晓得为何咱们不只仅应用PHP的本机range函数来完成该输入。是的,你是。输入将是相反的。区分正在于咱们抵达哪里的形式。

当咱们应用rangePHP,将执行它,正在内存中创立一个数字的整个阵列,并return以为 整个阵列

的foreach轮回,而后将去正在它以及输入的值。换句话说,foreachwill将对数组自身进行操作。该range性能以及foreach惟一的“扳谈”一次。能够将其想像为经过邮件猎取包裹。送货员会把包裹交给您,而后分开。而后解开整个包装,掏出外面的任何货色。

当咱们应用天生器函数时,PHP将逐渐进入该函数并执行,直到遇到末端或yield要害字为止。当遇到a时yield,它将把过后的值前往外轮回。而后,它前往到天生器函数,并从孕育发生之处持续。因为您xrange领有一个for轮回,它将执行并屈从直到$max达到。想像它foreach以及发作器打乒乓球。

四、我为何需求阿谁?

显然,天生器可用于处理内存限度。依据您的环境,执行range(1, 1000000)遗言会使您的剧本致命,而对天生器执行一样的操作会很好。或如Wikipedia所述:

因为天生器仅依据需求较量争论其屈从值,因而它们关于示意低廉或无奈立刻较量争论的序列颇有用。这些包罗例如有限序列以及及时数据流。

发机电也应该很快。然而请记住,当咱们议论疾速时,咱们通常会以很小的数量扳谈。因而,正在您开端运转并更改一切代码以应用天生器以前,请进行基准测试以理解正在那边无意义。

天生器的另外一个用例是异步协程。该yield要害字不只前往值,但它也承受他们。无关此内容的具体信息,请参见上面链接的两个超卓的博客文章。

五、从何时起能够应用yield?

天生器已正在 PHP 5.5中

引入。测验考试应用yield该版本以前的版本会招致各类解析谬误,详细取决于要害字前面的代码。因而,假如您从该代码中遇到理解析谬误,请更新您的PHP。

相干学习保举:PHP编程从入门到通晓

以上就是php yield是甚么意义?的具体内容,更多请存眷资源魔其它相干文章!

标签: php yield php教程 php故障解决 php使用问题

抱歉,评论功能暂时关闭!