回调函数利用其范围之外的变量
在 PHP 中,通常需要使用对直接外部定义的数据进行操作的回调函数范围。为此,可以使用 use 关键字显式导入这些变量。
在提供的示例中,初始化数组 $arr,并计算其平均值 ($avg)。然而,在匿名回调函数 $callback 中,我们遇到了一个问题,因为 $avg 未定义。
为了解决这个问题,我们可以利用 use 关键字:
$callback = function($val) use ($avg) { return $val < $avg; };
通过添加 use ($avg),父作用域中的 $avg 变量被导入到回调函数中,允许我们在计算中使用它。
PHP 中可用的另一种方法7.4及更高版本是箭头函数的使用:
$callback = fn($val) => $val < $avg;
箭头函数自动捕获外部变量,简化流程。或者,我们可以进一步简化,并将回调定义直接包含在 array_filter 调用中:
return array_filter($arr, fn($val) => $val < $avg);
这展示了 PHP 在解决使用回调函数之外计算的变量的需求方面的多功能性。
以上是如何在 PHP 中访问回调函数作用域之外的变量?的详细内容。更多信息请关注PHP中文网其他相关文章!