取消设置PHP 7中的所有变量

时间:2017-06-12 16:27:45

标签: variables php-7 unset

我在PHP 5.5.9中使用以下脚本取消设置所有变量,这非常有用

$vars = array_keys(get_defined_vars());
for ($i = 0; $i < sizeOf($vars); $i++) {
    unset($$vars[$i]);  //this is line 72
}
unset($vars,$i);

但是,在PHP 7中,它们提供以下消息:

PHP Notice:  Array to string conversion in /root/script.php on line 72
PHP Notice:  Undefined variable: Array in /root/script.php on line 72

我的问题是如何让脚本在PHP 7中运行?

感谢您的任何建议!

1 个答案:

答案 0 :(得分:2)

您可以使用foreach代替for来避免这些错误。

$vars = array_keys(get_defined_vars());
foreach ($vars as $var) {
    unset($$var);
}
unset($vars, $var);

$$vars[$i]的评估顺序为different in PHP 7。它现在严格地从左到右。

以前它会首先评估$vars[$i],然后使用$从结果中形成一个新变量。

现在它首先评估$$vars,然后尝试在结果中找到[$i]