1.天生器:“静态天生内容的数组”,用到值的时分才去消费。
2.搭配应用:要害字 yield foreach
保举:《php培训》
进程:
1.作为天生器的办法相称于界说了一个数组;
2.天生器中的 yield,每一次呈现相称于界说了一个数组中呈现的值;
3.foreach 会遍历天生器中一切的 yield 界说的值(某个被界说的值(表白式),只有正在被用到的时分,以后yield同上一个yield之间的其余表白式才会被执行,以后yield之后的表白式没有会被执行);
4.foreach 失常完结的话(没有是break),判别一下天生器中最初一个yield之后能否有其余表白式未执行完,是的话,执行之;
5.没有同于线程,没有是并行执行,只是正在主营业逻辑以及天生器之间来回切换执行,只节流了空间,工夫没省上去。
想象应用场景:
一、取年夜数据文件,天生器中逐行读取;
二、???
例子:
gen.php
<?php function gen() { echo '天生器开端执行' . PHP_EOL; for ($i = 0; $i < 5; $i++) { echo '孕育发生数据以前:' . $i . PHP_EOL; yield $i; echo '孕育发生数据之后:' . $i . PHP_EOL; } echo '再来一个数据' . PHP_EOL; yield 5; echo '天生器执行完结' . PHP_EOL; } $gen_func = gen(); echo '天生器开端执行了吗?' . PHP_EOL; foreach ($gen_func as $key => $val) { echo '应用数据前' . PHP_EOL; echo '应用数据:' . $val . PHP_EOL; echo '应用数据后' . PHP_EOL; //if ($key >= 4) { //break; //} }
执行后果:
php gen.php 天生器开端执行了吗? 天生器开端执行 孕育发生数据以前:0 应用数据前 应用数据:0 应用数据后 孕育发生数据之后:0 孕育发生数据以前:1 应用数据前 应用数据:1 应用数据后 孕育发生数据之后:1 孕育发生数据以前:2 应用数据前 应用数据:2 应用数据后 孕育发生数据之后:2 孕育发生数据以前:3 应用数据前 应用数据:3 应用数据后 孕育发生数据之后:3 孕育发生数据以前:4 应用数据前 应用数据:4 应用数据后 孕育发生数据之后:4 再来一个数据 应用数据前 应用数据:5 应用数据后 天生器执行完结
局部执行进程解读:
一、14行并无挪用天生器gen(),只是做了界说;
二、进入 foreach 轮回后,开端挪用gen();
三、$val 需求值的时分,记住以后地位a,执行天生器;
四、执行到 yield 界说之处,取到值了,记住以后地位b,前往地位a;
五、轮回三、4两步;
六、轮回完结,执行完 yield 最初一次界说之处的之后的剩下局部;
七、去掉20、2一、22行的正文后执行,"应用数据:4 应用数据后",就再也不有其余输入。
其余(仅验证了PHP7.1.14版本)
一、value);//YES value;//NO
二、能够应用yield val;
三、PHP7之后,yield from 能够挪用天生器、数组、应用return等。
更多编程相干内容,请存眷资源魔编程教程栏目!
以上就是PHP天生器-静态天生内容的数组的具体内容,更多请存眷资源魔其它相干文章!
标签: php开发教程 php开发资料 php开发自学 PHP生成器
抱歉,评论功能暂时关闭!