生成器函数看起来像普通函数——不同的是普通函数返回一个值,而生成器可以 yield 生成多个想要的值。 任何包含 yield 的函数都是一个生成器函数。
当一个生成器被调用的时候,它返回一个可以被遍历的对象.当你遍历这个对象的时候(例如通过一个foreach循环),PHP 将会在每次需要值的时候调用对象的遍历方法,并在产生一个值之后保存生成器的状态,这样它就可以在需要产生下一个值的时候恢复调用状态。
function gen_one_to_three() {
for ($i = 1; $i <= 3; $i++) {
//注意变量$i的值在不同的yield之间是保持传递的。
yield $i;
}
}
$generator = gen_one_to_three();
foreach ($generator as $value) {
echo "$value\n";
}
上面的代码会输出:1 2 3
也可以是键值对。下面每一行是用分号分割的字段组合,第一个字段将被用作键名。
$input = <<<'EOF'
1;PHP;Likes dollar signs
2;Python;Likes whitespace
3;Ruby;Likes blocks
EOF;
function input_parser($input) {
foreach (explode("\n", $input) as $line) {
$fields = explode(';', $line);
$id = array_shift($fields);
yield $id => $fields;
}
}
foreach (input_parser($input) as $id => $fields) {
echo "$id:\n";
echo " $fields[0]\n";
echo " $fields[1]\n";
}
-
PHP 函数 str_contains 判断是否包含子字符串PHP 函数 str_contains 判断是否包含子字符串
-
老版本PHP 使用 str_starts_with 和 str_ends_with如何在老版本PHP 使用 str_starts_with 和 str_ends_with
-
PHPExcel 功能强大的开源 PHP Excel 表格处理器PHPExcel 功能强大的开源 PHP Excel 表格处理器
-
PHP 函数嵌套定义行不行PHP 可以函数嵌套定义吗?
-
PHP 常用安全检查函数PHP 常用安全检查函数
-
PHP函数 map_array 学习PHP函数 map_array 学习
暂无评论,抢个沙发...