PHP $$ var [' index'] =某事;失败了,虽然我认为它会像$$ var = something一样工作;不

时间:2015-04-25 08:19:03

标签: php syntax

我试图在PHP中使用$$语法来访问数组,我们可以将变量的名称放在另一个变量中并访问该变量。

我以前用不同的方式多次使用过这种语法,但令我惊讶的是,这并没有给我带来影响,并且浪费了很多时间。

以下是复制问题的示例代码:

$test=array(
'a'=>array(array(1,2,3),array(4,5,6),array(7,8,9))
);

$var = 'test';
var_dump($$var);
var_dump($$var['a']);

var_dump($$var)按预期工作,但我收到警告:非法字符串偏移' a'在第var_dump($$var['a']);行,var_dump只打印null

为什么这不起作用?我在这做错了什么? 如果数组不支持该语法,是否有任何解决方法?

1 个答案:

答案 0 :(得分:4)

您的$$var['a']相当于${$var['a']}。不是${$var}['a']。后者是您正在寻找的解决方法语法。

引用PHP Manual on Variable Variables

  

为了将变量变量与数组一起使用,您必须解决模糊问题。也就是说,如果您编写$$a[1],则解析器需要知道您是否打算将$a[1]用作变量,或者您希望$$a作为变量然后[1]来自该变量的索引。解决这种歧义的语法是:第一种情况为${$a[1]},第二种情况为${$a}[1]

请参阅http://codepad.org/lR7QJygX