我在下面创建了代码,但仅适用于PHP 7+版本。
要在$$variablename[$key]
的5.6版上运行,我需要在此处进行哪些更改?
$g_module_id_bar_1['id'] = 5;
$i = 1;
$variablename = 'g_module_id_bar_'.$i;
$key = 'id';
echo $$variablename[$key]; // doesn't work
结果应为: 5
答案 0 :(得分:3)
在PHP 5中,您应该编写
echo ${$variablename}[$key];
您的问题中的代码在PHP 7中起作用的原因是PHP 7引入了对间接变量处理方式的更改:
现在将严格按照从左到右的顺序评估对变量,属性和方法的间接访问,与之前的特殊情况相反。下表显示了评估顺序如何变化。
更具体地说,以下表达式:
$$foo['bar']['baz']
在PHP 5中解释为:
${$foo['bar']['baz']}
在PHP 7中:
($$foo)['bar']['baz']