简单例子
//包含yield的函数可以生成一个generator 对象,可以被foreach 遍历 function Generator() { for ($i = 0; $i < 3; $i++) { echo "输出存在感1\n"; yield $i; echo "输出存在感2\n"; } } echo "###返回对象1####\n"; var_dump(Generator()); echo "###返回对象####\n"; echo "###遍历一次情况####\n"; foreach (Generator() as $value) { var_dump($value); break; //只遍历一次的情况 } echo "###遍历一次情况####\n"; echo "###一直遍历的情况####\n"; foreach (Generator() as $value) { var_dump($value); //遍历多次 } echo "###一直遍历的情况####\n"; /* ###返回对象1#### object(Generator)#1 (0) { } ###返回对象#### ###遍历一次情况#### 输出存在感1 int(0) ###遍历一次情况#### ###一直遍历的情况#### 输出存在感1 int(0) 输出存在感2 输出存在感1 int(1) 输出存在感2 输出存在感1 int(2) 输出存在感2 ###一直遍历的情况#### * */
1:在调用函数返回的时候,可以发现for里面的语句并没有执行 2:在遍历一次的时候,可以发现调用函数,却没有正常的for循环3次,只循环了一次 3:在遍历一次的情况时,"存在感2"竟然没有调用,在一直遍历的情况下才调用标签:输出,遍历,Generator,yield,echo,####,详解,php,### From: https://www.cnblogs.com/zxqblogrecord/p/16818170.html