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