Почему $$ var ['namedIndex'] = 'test' не работает? - PullRequest
3 голосов
/ 30 октября 2009

В PHP вы можете

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

и работает нормально. Но когда вы пытаетесь использовать его с массивом, он не работает, и об ошибках не сообщается.

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

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

Спасибо за помощь

[EDIT] Если я сделаю

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

работает и выдает

title[0] = 'test';

Но мне действительно нужен именованный индекс: /

Ответы [ 2 ]

4 голосов
/ 30 октября 2009

напишите так:

${$var}['en']

из документов:

Чтобы использовать переменные переменные с массивами, вы должны разрешить проблема неоднозначности. Это если вы напишите $$ a 1 , тогда парсер должен знать, если вы хотели использовать $ a 1 в качестве переменная, или если вы хотели $$ a как переменная, а затем индекс 1 из эта переменная. Синтаксис для разрешить эту неоднозначность можно следующим образом: $ {$ a 1 } для первого случая и $ {$ a} 1 для второй.

Ссылка для справки

2 голосов
/ 30 октября 2009

То, что вы действительно хотите, это:

${$var}['en']

Проблема, как указано в руководстве, заключается в неоднозначности. Когда вы пишете $$var['en'], он сначала пытается найти значение $var['en'], а затем находит переменную с именем значения этого индекса. Скобки в ${$var}['en'] показывают, что вы хотите, чтобы $var был расширен первым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...