使PHP变量或数组不存在于设置它的函数之外


make PHP variable or array not exist out of the function where it was set

我有以下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的值。

最后你得到了两个同名但作用域不同的变量,因此它们不会重叠/覆盖彼此。

反过来也是有效的,全局变量在函数作用域中不可见。你需要使用全局操作符来使它们(导入它们)在函数作用域中可见。

希望这对你有帮助。:)