我在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中运行?
感谢您的任何建议!
答案 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]
。