这是升级到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/