2017-06-12 102 views
1

我用在PHP 5.5.9以下腳本來取消所有的變量,它的偉大工程取消設置在PHP 7

$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中工作?

感謝您的任何建議!

回答

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]

+0

您的代碼有效。感謝您的解釋,這對我很有用,因爲我剛剛升級了服務器並且不知道這一點。我已經更新了問題中的PHP版本。 – aye