PHP基础之生成器2——生成器语法详情解析
2014-11-07 00:00
986 查看
一个生成器函数看上去和普通函数一样, 不同之处在于生成器会按需产出多个值而不是返回一个值.
当生成器函数被调用的时候,会返回一个可以迭代的对象. 当你迭代那个对象的时候 (例如, 通过foreach循环), 每当需要一个值的时候,PHP都会调用生成器函数, 然后当生成器产出一个值的时候会保存生成器的状态,以便下一个值需要的时候可以恢复.
如果没有更多值产出, 生成器函数可以简单退出, 调用代码会继续就好像一个数组用完所有值一样.
Note:
生成器不能返回值: 这样做会导致编译错误. 在生成器中空的返回语句是有效的语法并且会中断该生成器.
[b]yield 关键字[/b]
生成器函数的核心就是 yield 关键字. 在最简单的形式中, 一个 yield 语句看上去非常像一个return语句, 不同之处在于yield提供一个值给查看生成器的代码然后暂停生成器的执行,而不是返回一个值之后停止执行.
Example #1 产出值的简单示例
当生成器函数被调用的时候,会返回一个可以迭代的对象. 当你迭代那个对象的时候 (例如, 通过foreach循环), 每当需要一个值的时候,PHP都会调用生成器函数, 然后当生成器产出一个值的时候会保存生成器的状态,以便下一个值需要的时候可以恢复.
如果没有更多值产出, 生成器函数可以简单退出, 调用代码会继续就好像一个数组用完所有值一样.
Note:
生成器不能返回值: 这样做会导致编译错误. 在生成器中空的返回语句是有效的语法并且会中断该生成器.
[b]yield 关键字[/b]
生成器函数的核心就是 yield 关键字. 在最简单的形式中, 一个 yield 语句看上去非常像一个return语句, 不同之处在于yield提供一个值给查看生成器的代码然后暂停生成器的执行,而不是返回一个值之后停止执行.
Example #1 产出值的简单示例
<?php function gen_one_to_three() { for ($i = 1; $i <= 3; $i++) { // Note that $i is preserved between yields. yield $i; } } $generator = gen_one_to_three(); foreach ($generator as $value) { echo "$value\n"; } ?>
相关文章推荐
- php基础知识:类与对象(4) 范围解析操作符(::)
- C,Delphi,PHP 基础语法对比
- PHP 学习笔记(二)基础语法
- PHP基础语法
- PHP语法基础:数据类型、常量与变量的声明及区别
- 入门系列之二PHP基础语法:if 语句的使用
- PHP自学笔记2——语法基础
- PHP 语法 基础知识
- 在w3cschool.com学习PHP基础语法
- 痕迹_PHP基础语法——变量
- php中xml语法解析总结
- php学习笔记之基础语法篇
- PHP_语法基础
- php基础语法---php语言标识
- PHP基础语法
- PHP语法基础
- php基础语法
- 1.1 - 第一章:PHP基础 - 语法
- php基础语法
- 【php】php语法基础