php 生成ai文件,php_Generator php 生成器

php_Generator php 生成器

一个生成器函数看起来像一个普通的函数,不同的是普通函数返回一个值,而一个生成器可以yield生成许多它所需要的值。当一个生成器被调用的时候,它返回一个可以被遍历的对象.当你遍历这个对象的时候(例如通过一个foreach循环),PHP 将会在每次需要值的时候调用生成器函数,并在产生一个值之后保存生成器的状态,这样它就可以在需要产生下一个值的时候恢复调用状态。一旦不再需要产生更多的值,生成器函数可以简单退出,而调用生成器的代码还可以继续执行,就像一个数组已经被遍历完了.

Note:一个生成器不可以返回值: 这样做会产生一个编译错误。然而return空是一个有效的语法并且它将会终止生成器继续执行。

yield关键字:

生成器函数的核心是yield关键字。它最简单的调用形式看起来像一个return申明,不同之处在于普通return会返回值并终止函数的执行,而yield会返回一个值给循环调用此生成器的代码并且只是暂停执行生成器函数。

DEMO:

// 生成器语法

function xrange($start, $limit, $step){

if ($start < $limit) {

if ($step < 0) {

throw new LogicException('step must +ve');

}

for ($i = $start; $i <= $limit; $i += $step) {

yield $i;

}

} else {

if ($step >= 0) {

throw new LogicException('step must be -ve');

}

for ($i = $step; $i >= $limit; $i += $step) {

yield $i;

}

}

}

print_r(xrange(1, 9, 2));

// 使用php生成器实现range的函数功能

$newarr = array();

foreach(xrange(1, 9, 2) as $key => $val){

array_push($newarr, $val);

}

print_r($newarr);

echo "
";

echo '使用range生成数组
';

print_r(range(1, 9, 2));

结果:

Generator Object ( )

Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 )

使用range生成数组

Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 )

php 中的yield类似于 js, python 中的 yield 作用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值