取消设置PHP脚本中的所有变量
尝试自动取消设置脚本中的所有变量。取消设置PHP脚本中的所有变量
试过这样:
echo '<br /> Variables in Script before unset(): <br />';
print_r(array_keys(get_defined_vars()));
echo '<br /><br />';
var_dump(get_defined_vars());
// Creates string of comma-separated variables(*) for unset.
$all_vars = implode(', $', array_keys(get_defined_vars()));
echo '<br /><br />';
echo '<br />List Variables in Script: <br />';
echo $all_vars;
unset($all_vars);
echo '<br /><br />';
echo '<br />Variables in Script after unset(): <br />';
print_r(array_keys(get_defined_vars()));
echo '<br />';
var_dump(get_defined_vars());
为什么它不工作?
有没有更好的方法来做到这一点?
感谢您的帮助!
(*) It's seems somewhat that it does not really create the variables, but a string that looks like variables...
这里亚去 - >
$vars = array_keys(get_defined_vars());
for ($i = 0; $i < sizeOf($vars); $i++) {
unset($$vars[$i]);
}
unset($vars,$i);
,并澄清,破灭返回“以相同的顺序将所有数组元素的字符串表示”。 http://php.net/manual/en/function.implode.php
Unset要求实际变量作为参数,而不仅仅是一个字符串表示。它类似于get_defined_vars()返回的内容(不是实际的变量引用)。因此,代码会遍历字符串数组,并使用额外的$前面中的每一个作为引用返回 - 未使用的可以使用。
foreach (array_keys($GLOBALS) as $k) unset($$k); unset($k);
**只需注意:**必须在全局范围内运行 - 在函数中使用此命令会抛出错误!最好使用'unset($ GLOBALS [$ k])'而不是'unset($ k)'。 – Soaku 2017-09-14 19:05:39
不知道你们这些家伙,但$$瓦尔对我不起作用。
这就是我做到的。
$vars = array_keys(get_defined_vars());
foreach($vars as $var) {
unset(${"$var"});
}
为什么你需要这样做呢? – 2014-10-08 01:45:50
我认为你误解了内爆函数的使用.. – 2014-10-08 01:57:38
没有太多的理由来取消设置所有变量。 PHP中的内存管理就像C或C++,其中分配的内存需要被释放。执行脚本后,PHP将自动释放所有使用过的内存。 – 2014-10-08 02:05:20