- 此问题在此处已有答案**:
Reference: What is variable scope, which variables are accessible from where and what are "undefined variable" errors?(3个答案)
昨天关门了。
这不会产生错误:
$c = function() {
return 'xx';
};
echo $c();
对于下面的代码,我得到了一个错误,为什么?
警告:未定义的变量$a
$a = function($v) {
return $v;
};
$b = function($v) {
return $a($v);
};
echo $b('something');
1条答案
按热度按时间pgpifvop1#
错误“警告:未定义的变量$a”是因为变量$a是在赋给$a的匿名函数内部定义的,而它不在赋给$b的匿名函数的作用域中。
换句话说,变量$a没有在全局作用域中定义,所以当赋值给$b的函数试图访问它时,PHP找不到它,并生成一个“Undefined variable”警告。
要修复此错误,需要将$a作为参数传递给赋值给$B的函数,或者使用use关键字将$a变量导入赋值给$b的函数:
选项1:将$a作为参数传递给$B
选项2:使用use关键字将$a导入$B