我有关于unset
- 如何取消设置所有变量。我应该使用
unset($var1,$var2,$var3,...)
还是存在任何其他简单的方法? - 在函数末尾取消设置变量是一种好习惯?有什么区别!
- 取消设置变量是否会
reduce
编程execution time
?
谢谢
你的意思unset($var1,$var2,$var3,...)
是对你来说还不够容易吗?
明确地这样做是没有意义的,因为局部变量总是会在函数作用域的末尾消失。这也适用于引用变量,只有函数本地的引用会消失,但无论它们引用什么,如果在函数范围之外,仍然会存在。
不知道。
如何取消设置所有变量。我应该使用 unset($var1,$var2,$var3,...) 还是存在任何其他简单的方法?
是的,这是取消设置多个变量的正常方法。您可以迭代范围内的变量并取消设置,但这将是矫枉过正。
在函数末尾取消设置变量是一种好习惯?有什么区别!
虽然变量将在作用域(函数、类、脚本)的末尾被垃圾收集,但在单文件脚本(过程)中执行此操作可能很有用——尤其是在其他脚本任意包含在作用域中的脚本中。
话虽这么说,但组织干净,这是不必要的;但是,也不一定是坏事。
取消设置变量是否会减少编程执行时间?
在大多数情况下,几乎没有区别;但是,正如我之前提到的,它不会受到伤害,并且可能会为范围内/不在范围内的内容带来一些明确性。事实上,我通常在 for/foreach 之后立即执行此操作,因为 for/foreach 没有块范围,因此在这些块中定义的变量在循环之后可用。
例子:
foreach ($doctors as $key => $val) {
// do something
}
unset($key, $val);
顺便说一句,如果您想知道如何批量实际执行此操作(是的,有可能,但它并不漂亮):
<?php
$_SCRIPT_one = 1;
$_SCRIPT_two = 2;
$_SCRIPT_three = 3;
// list of all variables defined
$all = array_keys(get_defined_vars());
// list only the local variables we are interested in
$local = array_filter($all, function($name) { return preg_match('/^_SCRIPT_/i', $name); });
// dump currently scoped local variables
var_dump($local);
// unset local variables
foreach ($local as $var) { unset($$var); }
// list of all variables defined
$all = array_keys(get_defined_vars());
// list only the local variables we are interested in
$local = array_filter($all, function($name) { return preg_match('/^_SCRIPT_/i', $name); });
// dump currently scoped local variables
var_dump($local);
首先,unset
是语言结构,而不是函数。
如何取消设置所有变量。我应该使用 unset($var1,$var2,$var3,...) 还是存在任何其他简单的方法?
您可以取消设置所有全局变量,但是,我不明白您为什么要这样做:
foreach (array_keys($GLOBALS) as $var) {
if ($var != 'GLOBALS') unset($GLOBALS[$var]);
}
在函数末尾取消设置变量是一种好习惯?有什么区别!
不,变量超出范围时会自动取消设置。手动进行是没有意义的。
取消设置变量是否会减少编程执行时间?
并非如此,但它可能会减少内存使用量。