目录
简介
生成器作为交互器
示例
输出
首页 后端开发 php教程 PHP生成器与迭代器对象的比较

PHP生成器与迭代器对象的比较

Sep 16, 2023 pm 05:41 PM
比较 php生成器 php迭代器对象

PHP生成器与迭代器对象的比较

简介

当调用生成器函数时,内部会返回一个新的 Generator 类对象。它实现了迭代器接口。迭代器接口定义了以下抽象方法

  • Iterator::current - 返回当前元素
  • Iterator: :key — 返回当前元素的键
  • Iterator::next — 向前移动到下一个元素
  • 迭代器: :rewind — 将迭代器倒回到第一个元素
  • Iterator::valid — 检查当前位置是否有效

生成器充当仅前向迭代器对象,并提供可调用的方法来操纵生成器的状态,包括向生成器发送值和从生成器返回值。

生成器作为交互器

在下面的示例中,生成器函数在生成器对象的文件中生成行,可以使用 oreach 循环遍历这些行。还可以调用诸如 current() 和 next() 之类的迭代器方法。但是,由于生成器是只向前迭代器,因此调用 rewind() 方法会抛出异常

示例

<?php
function filegenerator($name) {
   $fileHandle = fopen($name, &#39;r&#39;);
   while ($line = fgets($fileHandle)) {
      yield $line;
   }
   fclose($fileHandle);
}
$name="test.txt";
$file=filegenerator($name);
foreach ($file as $line)
echo $line;
$file->rewind();
echo $file->current();
$file->next();
echo $file->current();
?>
登录后复制

输出

遍历文件行后,显示如下致命错误

PHP User Defined Functions
PHP Function Arguments
PHP Variable Functions
PHP Internal (Built-in) Functions
PHP Anonymous functions
PHP Arrow Functions
PHP Fatal error: Uncaught Exception: Cannot rewind a generator that was already run
登录后复制

以上是PHP生成器与迭代器对象的比较的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

小米14 Pro怎么开启nfc功能? 小米14 Pro怎么开启nfc功能? Mar 19, 2024 pm 02:28 PM

小米14 Pro怎么开启nfc功能?

华为 Pocket2怎么隔空刷抖音? 华为 Pocket2怎么隔空刷抖音? Mar 18, 2024 pm 03:00 PM

华为 Pocket2怎么隔空刷抖音?

WPS Word怎么设置行距让文档更工整 WPS Word怎么设置行距让文档更工整 Mar 20, 2024 pm 04:30 PM

WPS Word怎么设置行距让文档更工整

iPhone 16 Pro CAD 图曝光 加入第二个新按键 iPhone 16 Pro CAD 图曝光 加入第二个新按键 Mar 09, 2024 pm 09:07 PM

iPhone 16 Pro CAD 图曝光 加入第二个新按键

红米Redmi K70E如何设置自定义来电铃声? 红米Redmi K70E如何设置自定义来电铃声? Feb 24, 2024 am 10:00 AM

红米Redmi K70E如何设置自定义来电铃声?

PHP7.2和5版本对比及优劣势分析 PHP7.2和5版本对比及优劣势分析 Feb 27, 2024 am 10:51 AM

PHP7.2和5版本对比及优劣势分析

小米14 Ultra AI智能扩图如何使用? 小米14 Ultra AI智能扩图如何使用? Mar 16, 2024 pm 12:37 PM

小米14 Ultra AI智能扩图如何使用?

C语言与PHP的区别及比较分析 C语言与PHP的区别及比较分析 Mar 20, 2024 am 08:54 AM

C语言与PHP的区别及比较分析

See all articles