PHP 收益关键字
示例
一条yield语句与return语句相似,只不过yield并不会停止执行函数并返回,而是返回了Generator对象并暂停了Generator函数的执行。
这是范围函数的示例,写为生成器:
function gen_one_to_three() { for ($i = 1; $i <= 3; $i++) { //注意,$i在收益率之间保留。 yield $i; } }
您可以通过检查以下输出看到此函数返回Generator对象var_dump:
var_dump(gen_one_to_three()) # Outputs: class Generator (0) { }
屈服价值
然后可以像数组一样遍历Generator对象。
foreach (gen_one_to_three() as $value) { echo "$value\n"; }
上面的示例将输出:
1 2 3
通过键产生价值
除了产生值之外,您还可以产生键/值对。
function gen_one_to_three() { $keys = ["first", "second", "third"]; for ($i = 1; $i <= 3; $i++) { //注意,$i在收益率之间保留。 yield $keys[$i - 1] => $i; } } foreach (gen_one_to_three() as $key => $value) { echo "$key: $value\n"; }
上面的示例将输出:
first: 1 second: 2 third: 3