php yield是什么意思?_后端开发

php yield是什么意思?_后端开发,第1张

c语言中逻辑运算符优先级是什么?_后端开发

c语言中逻辑运算符优先级由高到低依次是:!(逻辑非)、&&(逻辑与)、||(逻辑或)。


逻辑表达式的值为逻辑值;逻辑值分为逻辑真值和逻辑假值,在判断时,仅有零值被判断为逻辑假值(false),一切非零值均可被判断为逻辑真值(true)。


php yield的意思是该yield关键字从发电机函数返回数据,yield语句看起来很像return语句,yield不是停止函数的执行并返回,而是为循环生成器的代码提供一个值,并暂停生成器函数的执行。


php yield是什么意思?_后端开发,第2张

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函数来实现该输出。


是的,你是。


输出将是相同的。


区别在于我们到达那里的方式。


PHP ZVAL是什么意思?_后端开发

PHP ZVAL是PHP中最重要的数据结构之一,包含了PHP中的变量值和类型的相关信息,它是struct结构,基本结构为【struct _zval_struct(zvalue_value value zend_uchar type)】。


当我们使用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编程从入门到精通

以上就是php yield是什么意思?的详细内容,更多请关注ki4网其它相关文章!

php echo、print、print_r、var_dum的区别有哪些_后端开发

php echo、print、print_r、var_dum的区别有:1、echo和print是语言结构,而print_r和var_dump是普通函数;2、echo用于输出一个或多个字符串;3、print用于输出字符串等等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/561321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020-07-02
下一篇 2020-07-02

发表评论

登录后才能评论

评论列表(0条)

保存