Php 数组函数使用的lamba内部的产量
假设我有以下代码:Php 数组函数使用的lamba内部的产量,php,yield,Php,Yield,假设我有以下代码: function someFunc(){ // some other logic goes here $return = []; array_walk_recursive($matches, function($value, $key) use (&$return){ $return[] = $value; }); return $return; } 通常这一切都很好。基本上,$matches被展平然后返回 但
function someFunc(){
// some other logic goes here
$return = [];
array_walk_recursive($matches, function($value, $key) use (&$return){
$return[] = $value;
});
return $return;
}
通常这一切都很好。基本上,$matches
被展平然后返回
但是,我想对匹配中的每个$key=>$value
对应用一些其他逻辑,但我想应用的逻辑在当前范围中没有位置
当然,上面的代码工作正常,我可以简单地使用foreach
在调用函数后应用逻辑,例如:
function someOtherFunc(){
foreach(someFunc() as $key => $value){
// do stuff
}
}
但是为了参数起见,让我们假设,与其在someFunc
内返回,我宁愿yield
,因此someFunc
将改为:
function someFunc(){
// some other logic goes here
array_walk_recursive($matches, function($value, $key){
yield $value;
});
}
这当然不起作用,因为现在匿名函数变成了一个生成器,而该生成器又被array\u walk\u recursive
使用(这实际上是一个谜,为什么它不会引发错误,我希望array\u walk\u recursive
会抱怨),这会产生很好的结果,由于匿名函数的作用域满足yield
的要求,因此不会向调用方函数生成任何内容
基本上我想问的是,有没有可能在不破坏当前流程或一些奇怪的黑客代码的情况下,向调用者提供$value