php生成器yield from详解

简介: php生成器yield from详解

PHP7中,通过生成器委托(yield from),可以将其他生成器、可迭代的对象、数组委托给外层生成器。外层的生成器会先顺序 yield 委托出来的值,然后继续 yield 本身中定义的值。同时yield from也能获取到生成器的返回值,
和生成器的getReturn方法作用同等,需要注意这里仅仅指的是获取返回值是同等的。
yield from 方便我们编写比较清晰生成器嵌套

<?php

function G1()
{

$i = 3;
while ($i--)
{
    var_dump($i);
    yield $i;
}

return 110;

}

function G2()
{

$return = yield from G1();
var_dump($return);

}

foreach (G2() as $item)
{

}
上面的代码将G1生成器的迭代委托给了G2,G2需要先顺序迭代G1,然后再继续yield本身,通过yield from委托完成会返回委托迭代器的返回值

目录
相关文章
|
4月前
|
算法 大数据 数据处理
深入理解PHP中的生成器(Generators)
【7月更文挑战第28天】在PHP的世界中,生成器是一个强大而常被忽视的特性。它们允许开发者实现简单而高效的迭代器,优化内存使用并简化复杂运算。本文将深入探讨生成器的内部机制,展示如何利用这一特性来编写更加优雅和高效的代码。准备好,我们将一起揭开生成器的神秘面纱。
54 2
|
4月前
|
大数据 PHP 数据库
深入理解PHP中的生成器(Generators)
【7月更文挑战第17天】在PHP开发中,生成器是一个强大但常被忽视的特性,它允许开发者以迭代器的方式处理大量数据而不需要一次性将所有数据加载到内存。本文将介绍生成器的基本概念、使用场景和实现方法,帮助读者掌握如何利用生成器优化程序性能和提高代码的可读性与维护性。
|
5月前
|
存储 算法 大数据
深入理解PHP中的生成器(Generators)
【6月更文挑战第28天】在编程世界中,生成器是一个强大而常被忽视的特性。它们允许你在函数中定义一个迭代算法,却不需要一次性返回所有结果。本文将深入探讨PHP的生成器,解释其工作原理,展示如何创建和使用它们,以及讨论它们如何优化内存使用和提高性能。
37 2
|
5月前
|
存储 算法 大数据
深入理解PHP中的生成器(Generators)
【6月更文挑战第29天】在PHP的世界里,生成器是一个强大的工具,它允许你以迭代的方式处理大量数据,而不需要一次性将所有数据加载到内存中。本篇文章将深入探讨生成器的概念、用法和实际应用场景,帮助你掌握这一高效处理数据的利器。
|
5月前
|
存储 算法 PHP
深入理解PHP中的生成器(Generators)
【6月更文挑战第22天】在PHP的世界里,生成器是一个强大的功能,它允许你定义一个迭代器,而不需要实现迭代器接口。通过一个简单的关键字 "yield",你可以生成一个序列的值,每次只产生一个值,而不是一次性计算并存储所有的值。本文将带你深入了解生成器的工作原理,以及如何有效地使用它们来优化内存使用和提高代码效率。
|
5月前
|
PHP 数据库 开发者
探索PHP中的协程:生成器与异步编程
在PHP的世界中,协程的概念虽然不像在Python等语言中那样广为人知,但它的存在为异步编程带来了新的可能。本文将深入探讨PHP中的协程概念,特别是生成器(Generators)如何实现协程模式,以及这一机制如何被应用于异步编程,从而提升PHP应用的性能与响应能力。我们将通过实例和代码示例,展示如何利用这些特性来构建更加高效、非阻塞的PHP应用程序。
|
PHP
PHP - Laravel 视图模板(blade.php) 模板继承(@extends、@yield、@section)
PHP - Laravel 视图模板(blade.php) 模板继承(@extends、@yield、@section)
330 0
|
PHP 数据库
PHP的yield使用场景是什么?底层原理是什么?
PHP的yield使用场景是什么?底层原理是什么?
500 0
|
PHP
php生成器的send方法详解,php yield send
php生成器的send方法详解,php yield send
204 0
|
存储 缓存 关系型数据库
PHP迭代生成器秒级导出500万数据
一、PHP迭代生成器 1.PHP性能优化利器:迭代生成器 yield理解 很多PHP开发者或许都不知道生成器这个功能,可能是因为生成器是PHP 5.5.0才引入的功能,也可以是生成器作用不是很明显。但是,生成器功能的确非常有用。