syntax-error - 用5.5编写的PHP函数在升级到7.0时抛出错误

标签 syntax-error global php-7

这是升级到7.0之前起作用的功能

function set_session_vars() {
$nb_args=func_num_args();
$arg_list=func_get_args();
for($i=0;$i<$nb_args;$i++) {
    global $$arg_list[$i];
    $_SESSION[$arg_list[$i]] = $$arg_list[$i];
}

}

现在它的原因错误说:
Parse error: syntax error, unexpected '[', expecting ',' or ';' in /home/mvyc1956/public_html/members/includes/functions.php on line 322

我相信它与GLOBAL的向后兼容更改以及$$和数组的使用有关,但是我的PHP不足以解决这个问题。

是否有人熟悉这行的原因:
global $$arg_list[$i];

这是被报告为错误原因的第322行,现在将失败,并且您建议我将代码更改为什么才能使其与PHP 7配合使用?

我进行了一次谷歌搜索,发现了this page,但是我仍然不了解需要更改的内容。

谢谢

说语法错误,因此该函数中的某些代码不再有效,但是需要使用php 7专家才能看到。

更新
我从上面的代码中删除了GLOBAL一词,应用程序“似乎”现在可以正常工作了,所以我现在问:

有谁特别知道,为什么Global是不兼容的问题?我的解决方法是将其简单地删除是可靠的,还是有更好的做法,还是该删除会再次困扰我?

最佳答案

Backward incompatible changes:

global only accepts simple variables

Variable variables can no longer be used with the global keyword. The curly brace syntax can be used to emulate the previous behaviour if required:


// Valid in PHP 5 only.
global $$foo->bar;

// Valid in PHP 5 and 7.
global ${$foo->bar};

因此,在您的情况下,它将变为:
global ${$arg_list[$i]};

关于syntax-error - 用5.5编写的PHP函数在升级到7.0时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43416701/

相关文章:

bash - 如何修复错误bash意外 token bash?

c - 函数指针与全局变量

Javascript 全局模块或全局变量

php - 如何为构造函数指定 void 返回类型

php - PHP7支持多态吗?

javascript - javascript 函数调用中由于单引号 ' 导致的错误

python - 使用 del() 删除列表中的多个元素

sql - 带反引号的SQL错误,表示 “`或附近存在语法错误”

variables - Go中函数体外部的非声明语句

PHP 7 和严格的 "resource"类型