我对unset
unset($var1,$var2,$var3,...)
还是其他任何简单方法?reduce
编程execution time
还是不?由于
答案 0 :(得分:3)
你的意思是unset($var1,$var2,$var3,...)
对你来说不够容易吗?
明确地这样做是没有意义的,因为局部变量总是会在函数范围的末尾消失。这也适用于引用变量,只有函数本地的引用才会消失,但无论它们引用什么,如果在函数范围之外,仍将存在。
不知道。
答案 1 :(得分:1)
如何取消设置所有变量。我应该使用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);
答案 2 :(得分:0)
首先,unset
是一种语言结构,而不是一种功能。
如何取消设置所有变量。我应该使用unset($ var1,$ var2,$ var3,...)还是存在任何其他简单方法?
你可以取消设置所有全局变量,但是,我不明白为什么你会这样做:
foreach (array_keys($GLOBALS) as $var) {
if ($var != 'GLOBALS') unset($GLOBALS[$var]);
}
在函数末尾取消变量是一种很好的做法?。差异化!
不,当变量超出范围时,变量会自动取消设置。没有必要手动完成。
取消变量是否会减少编程执行时间?
实际上,可能会减少内存使用量。