自从从 5.5.22 升级到 5.6.6 后,无法将可变变量传递给 PHP 中的函数?
Can't pass a variable variable into a function in PHP since upgrading from 5.5.22 to 5.6.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);
有没有办法让它像以前一样在一行中工作?有谁知道为什么它不再有效?
我应该补充一点,我已经尝试在前一行使用
var_dump(${"sR{$i}S1"});
并且它已定义,并且具有我期望的价值。
我在 google 或 SO 上找不到任何提及此行为的信息,我想知道这是否是错误而不是故意的。
我认为这是一个 opcache 错误。
禁用相关文件的 opcache 恢复了预期的行为。
我在以下位置提交了一份(相当无用的)错误报告:
https://bugs.php.net/bug.php?id=69159
显然已修复并关闭:
http://git.php.net/?p=php-src.git;a=commitdiff;h=a29b64fc1029b4121e3e9ff20901c35ad600b4da
这行代码在我升级之前工作得很好,现在不行了:
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"});并且它已定义,并且具有我期望的价值。
我在 google 或 SO 上找不到任何提及此行为的信息,我想知道这是否是错误而不是故意的。
我认为这是一个 opcache 错误。
禁用相关文件的 opcache 恢复了预期的行为。
我在以下位置提交了一份(相当无用的)错误报告:
https://bugs.php.net/bug.php?id=69159
显然已修复并关闭:
http://git.php.net/?p=php-src.git;a=commitdiff;h=a29b64fc1029b4121e3e9ff20901c35ad600b4da