由于某种原因,此函数不会返回值ciao
:
$a = "ciao";
function a() {
return $a;
}
我不知道为什么。
答案 0 :(得分:3)
在PHP中,函数无权访问全局变量。在函数体中使用global $a
或将$ a的值作为参数传递。
答案 1 :(得分:3)
函数只能返回它们在本地空间中的变量,称为范围:
$a = "ciao";
function a() {
$a = 'hello`;
return $a;
}
将返回hello
,因为在a()
中,$a
是它自己的变量。如果您需要函数中的变量,请将其作为参数传递:
$a = "ciao";
function a($a) {
return $a;
}
echo a($a); # "ciao"
顺便说一句,如果您启用NOTICES to be reported(error_reporting(-1);
),PHP会告诉您原始代码中的return $a
使用了未定义的变量。
答案 2 :(得分:2)
$a
不在函数范围内。
PHP不适用于像JS一样的块作用域的闭包,如果你想访问函数中的外部变量,你必须传递它是明智的,或使用global
来制作它可用,这是不受欢迎的。
$a = "ciao";
function a() {
global $a;
return $a;
}
或PHP5.3 +中的闭包样式
function a() use ($a) {
return $a;
}