考虑以下情况......
$var = 'Lots of information';
function go($var) {
// Do stuff
}
现在,当PHP退出函数时,是否会自动清除函数中所有局部变量的内存,或者我应该这样做:
unset($var);
...在存储大量数据的任何局部变量的函数内?
答案 0 :(得分:2)
它将在功能范围内清除。这意味着函数调用后函数的$var
参数将不再存在。
请注意$var = 'Lots of information';
在功能块之外,因此不会自动清除。在这种情况下,全局范围中的$var
和函数范围中的$var
是两个不同的东西,在功能块内只存在函数范围中的$var
。
答案 1 :(得分:0)
这个问题涉及可变范围的概念。在函数内部,变量是“包含”的,除非声明为全局变量,否则与函数外部的同名变量无关。因此,如果您在函数内部创建了一个大变量,并且想要取消设置()它,则需要在函数内部取消设置()。这个页面很重要,尤其是关于“全局”和“静态”变量的部分。 PHP还有一种方法可以使用变量名前面的&符号通过引用传递变量。在这种情况下,函数对变量本身进行操作,而不是函数的变量副本。 http://php.net/manual/en/language.variables.scope.php