使用 use() 的数组过滤器回调参考

Array filter callback reference with use()

我想知道如何结合使用 use() 方法和对回调的引用:

array_filter($array, function($value) use($external_parameter) {
   // Return ...
}); 

如何将 use() 方法与对回调的引用一起包含在内?

array_filter($array, 'custom_callback_function'); // Where use()?

您需要在函数声明中包含 use,例如:

function foo() use ($bar) { ... }

但这实际上行不通,因为 a) 它在语法上不受支持,并且 b) 从逻辑上讲,您当时不知道变量名称,而且当时它可能不在范围内。您的函数最多可以接受一个附加参数:

function foo($bar, $baz) { ... }

然后您捕获一个变量并将其传递给 foo,如下所示:

array_filter($array, function (...$args) use ($bar) { return foo($bar, ...$args); })