在 PHP 7 中取消设置所有变量
Posted
技术标签:
【中文标题】在 PHP 7 中取消设置所有变量【英文标题】:Unset all variables in PHP 7 【发布时间】:2017-11-14 05:16:33 【问题描述】:我在 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】:您可以通过使用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]
。
【讨论】:
您的代码有效。感谢您的解释,这对我很有用,因为我刚刚升级了服务器并且不知道这一点。我已经更新了问题中的php版本。以上是关于在 PHP 7 中取消设置所有变量的主要内容,如果未能解决你的问题,请参考以下文章