我有以下php函数:
function a() {
$var = "variable";
return $var;
}
function b() {
$arr = array('a','r','r','a','y');
return $arr;
}
还有一些PHP函数
$var = a();
$arr = b();
print_r($var);
print_r($arr);
$var
和$arr
在函数中定义,然后在函数外重新定义。怎样才能使函数外的变量和数组与函数内的变量和数组分开,使函数内的变量和数组不存在于函数外?
函数有自己的作用域。除非使用global
关键字定义,否则函数变量不存在于函数之外。您可能会因为在函数内外使用相同的变量名而感到困惑。尝试将函数变量分别更改为$fx_arr
和$fx_var
。您将看到它们不存在于函数之外。
你需要更仔细地阅读php中的变量作用域
在a()
中声明的 $var
只在a()'s
作用域中可见。b()
中的$arr
也是如此。
这段代码$var = a();
应该这样读:
创建全局(用于文档范围)变量$var
,并将a()
返回的值赋给它。转到a()
,我们有:创建局部变量$var
(仅在函数范围内可见),并指定'variable'作为值,然后返回$var
的值。
最后你得到了两个同名但作用域不同的变量,因此它们不会重叠/覆盖彼此。
反过来也是有效的,全局变量在函数作用域中不可见。你需要使用全局操作符来使它们(导入它们)在函数作用域中可见。
希望这对你有帮助。:)