当前位置:首页 > PHP

yield 实现php

2026-01-30 03:46:31PHP

yield 关键字在 PHP 中的实现

yield 是 PHP 中用于生成器(Generator)的关键字,允许在函数中暂停执行并返回一个值,后续可以从暂停点继续执行。生成器提供了一种高效处理大数据集或延迟计算的方法,避免一次性加载所有数据到内存。

基本语法

生成器函数使用 yield 关键字返回值,而不是 return。每次调用生成器的 next() 方法时,函数会从上次暂停的位置继续执行。

function generatorExample() {
    yield 'value1';
    yield 'value2';
    yield 'value3';
}

$generator = generatorExample();
foreach ($generator as $value) {
    echo $value . "\n";
}

键值对生成

yield 不仅可以返回值,还可以返回键值对,类似于关联数组。

yield 实现php

function keyValueGenerator() {
    yield 'key1' => 'value1';
    yield 'key2' => 'value2';
}

$generator = keyValueGenerator();
foreach ($generator as $key => $value) {
    echo "$key: $value\n";
}

生成器委托

PHP 7.0 引入了 yield from 语法,允许生成器委托给另一个生成器或可遍历对象。

function delegateGenerator() {
    yield 1;
    yield from [2, 3];
    yield from anotherGenerator();
}

function anotherGenerator() {
    yield 4;
    yield 5;
}

$generator = delegateGenerator();
foreach ($generator as $value) {
    echo $value . "\n";
}

内存效率

生成器特别适合处理大数据集,因为它们不会一次性加载所有数据到内存,而是按需生成。

yield 实现php

function largeDatasetGenerator($start, $end) {
    for ($i = $start; $i <= $end; $i++) {
        yield $i;
    }
}

$generator = largeDatasetGenerator(1, 1000000);
foreach ($generator as $number) {
    echo $number . "\n";
}

生成器与返回值

生成器函数可以使用 return 返回一个最终值,该值可以通过 getReturn() 方法获取。

function generatorWithReturn() {
    yield 'value1';
    yield 'value2';
    return 'final value';
}

$generator = generatorWithReturn();
foreach ($generator as $value) {
    echo $value . "\n";
}
echo $generator->getReturn() . "\n";

实际应用场景

生成器常用于文件处理、数据库查询结果遍历、API 分页数据获取等场景,避免内存溢出。

function readLargeFile($fileName) {
    $file = fopen($fileName, 'r');
    while (!feof($file)) {
        yield fgets($file);
    }
    fclose($file);
}

$generator = readLargeFile('large_file.txt');
foreach ($generator as $line) {
    echo $line;
}

生成器提供了一种灵活且高效的方式来处理需要延迟计算或大数据集的情况,是 PHP 中强大的功能之一。

标签: yieldphp
分享给朋友:

相关文章

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searchT…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn =…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…