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