You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP匿名函数内部调用另一个匿名函数?报错原因解析

PHP匿名函数调用问题

问题场景

以下代码执行无报错:

$c = function() {
    return 'xx';
};

echo $c();

而执行下方代码时出现错误:

Warning: Undefined variable $a

$a = function($v) {
    return $v;
};

$b = function($v) {
    return $a($v);
};

echo $b('something');

请问为何会报错?如何在PHP匿名函数内部调用另一个匿名函数?

报错原因

PHP的匿名函数(闭包)默认不会自动继承外部作用域的变量。在定义$b这个匿名函数时,它内部的$a属于自身的局部作用域,找不到外部父作用域中定义的$a变量,因此触发“未定义变量”的警告。

解决方法

方法1:使用use关键字引入外部变量

通过use关键字将外部的$a变量显式引入到匿名函数的作用域中,修改后的代码如下:

$a = function($v) {
    return $v;
};

$b = function($v) use ($a) {
    return $a($v);
};

echo $b('something'); // 正常输出"something"

方法2:使用箭头函数(PHP 7.4+)

PHP 7.4及以上版本支持箭头函数,箭头函数会自动继承父作用域的变量,无需手动使用use,代码更简洁:

$a = function($v) {
    return $v;
};

$b = fn($v) => $a($v);

echo $b('something'); // 正常输出"something"

内容的提问来源于stack exchange,提问作者smolo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:52:10