为什么$$ var ['named Index'] ='test'不起作用?

时间:2009-10-30 20:28:46

标签: php

在PHP中你可以

$var = 'title';
$$var = 'my new title'; 

它工作正常。但是当你尝试将它与数组一起使用时,它不起作用并且没有报告错误。

$var = 'title';
$$var['en'] = 'my english title';

$var = 'description';
$$var['en'] = 'my english description';

感谢您的帮助

[编辑] 如果我做

$$var = array();
array_push($$var,'test');

它有效并输出

title[0] = 'test';

但我真的需要命名索引:/

2 个答案:

答案 0 :(得分:4)

这样写:

${$var}['en']

来自文档:

  

为了使用变量变量   对于数组,你必须解决一个问题   歧义问题。也就是说,如果你   写一个1然后解析器需要   知道你是否打算用$ 1作为   变量,或者如果你想要$$ a作为   变量,然后是1索引   那个变量。的语法   解决这种歧义的是:$ {$ a 1}   对于第一个案例和$ {$ a} 1   第二个。

Link For Reference

答案 1 :(得分:2)

你真正想要的是:

${$var}['en']

如手册中所述,问题不明确。当您编写$$var['en']时,它会先尝试查找$var['en']的值,然后找到一个带有该索引值的变量。 ${$var}['en']中的大括号表示您希望首先展开$var