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使用问题
抱歉,评论功能暂时关闭!