2009-10-30 5 views
3

En PHP, vous pouvez vous

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

et il fonctionne très bien. Mais quand vous essayez de l'utiliser avec array, cela ne marche pas et aucune erreur n'est signalée.

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

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

Merci pour l'aide

[EDIT] Si je ne

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

cela fonctionne et les sorties

title[0] = 'test'; 

Mais j'ai vraiment besoin index nommé:/

Répondre

4

écrire comme ceci:

${$var}['en'] 

des docs:

Pour utiliser des variables variables avec des tableaux, vous devez résoudre un problème d'ambiguïté. Autrement dit, si vous écrire un $$ 1 alors l'analyseur doit savoir si vous vouliez utiliser un 1 $ comme variable , ou si vous voulez un $$ comme variable puis l'indice 1 de que variable. La syntaxe pour l'erreur résolvant cette ambiguïté est: $ {$ a 1} pour le premier cas et $ {$ a} 1 pour le le second.

Link For Reference

+0

wow ... merci! J'ai vérifié le manuel mais je n'ai jamais trouvé cette page. Merci encore! – PierrePaul

+0

Il devrait être $ {$ var} ['en'] –

+0

oups, vous avez raison, j'ai fait une faute de frappe. J'ai corrigé ma réponse. – GSto

2

Qu'est-ce que vous voulez vraiment est:

${$var}['en'] 

Le problème, comme indiqué dans le manuel, est l'ambiguïté. Lorsque vous écrivez $$var['en'], il essaie d'abord de trouver la valeur $var['en'], puis trouve une variable avec le nom de la valeur de cet index. Les accolades dans ${$var}['en'] indiquent que vous souhaitez que $var soit développé en premier.

Questions connexes