【问题标题】:Unset all variables in PHP 7在 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 中工作?

感谢您的任何建议!

【问题讨论】:

    标签: variables php-7 unset


    【解决方案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版本。
    猜你喜欢
    • 2014-12-02
    • 2011-03-12
    • 2011-02-06
    • 2016-10-01
    • 2013-02-17
    • 2012-10-13
    • 1970-01-01
    • 2020-05-28
    相关资源
    最近更新 更多