Can';从5.5.22升级到5.6.6后,是否在PHP中将变量传递到函数中?

Can';从5.5.22升级到5.6.6后,是否在PHP中将变量传递到函数中?,php,variable-variables,php-5.6,Php,Variable Variables,Php 5.6,这一行代码在我升级之前工作得很好,但现在它没有: 123: $thisRow[] = displayR(${"sR{$i}S1"}, ${"nR{$i}S1P"}); 我得到这个错误: Undefined variable: sR1S1 in script.php on line 123 解决方法是首先手动分配它们 $s = ${"sR{$i}S1"}; $n = ${"nR{$i}S1P"}; $thisRow[] = displayR($s, $n); 有没有办法让它像以前一样在一条线

这一行代码在我升级之前工作得很好,但现在它没有:

123: $thisRow[] = displayR(${"sR{$i}S1"}, ${"nR{$i}S1P"});
我得到这个错误:

Undefined variable: sR1S1 in script.php on line 123
解决方法是首先手动分配它们

$s = ${"sR{$i}S1"};
$n = ${"nR{$i}S1P"};
$thisRow[] = displayR($s, $n);
有没有办法让它像以前一样在一条线上工作?有人知道为什么它不再有效吗

我应该补充一点,我已经尝试使用var_dump(${“sR{$I}S1”});在前一行中,它已定义,并且具有我期望的值

var_dump(${"sR{$i}S1"});
我在谷歌上找不到关于这种行为的任何提及,我想知道这是否是一个bug而不是故意的。

我相信这是一个opcache bug

在相关文件上禁用opcache恢复了预期的行为

我在以下位置提交了一份(相当无用的)错误报告:

显然已经修复并关闭:


显然,收紧草率的编码实践是一个缺陷:如果在将变量传递给函数时没有定义变量,那么该函数应该做什么?变量是在@Mark处定义的。我可以把它们放在前一行,它们就在那里,就像被插入的一样。VARYDUMP(${Sr{$i}s1)}输出一个值,正如预期的那样。如果您认为它是一个bug,那么PHP核心DeSsReS令我这样说:使用变量,例如数组,而不是数组,这是可怕的实践。我们没有任何结论性的证据证明这个程序应该工作,因为我们没有完整的测试用例。在所有工作中复制的测试用例。考虑到所有这些,我发现您的程序更有可能存在一些bug,而不是PHP。你必须提供一个完整的可复制的例子,以便我们能够做出相反的解释。