2010-11-02 16 views
2

J'essaie d'accéder à une variable dynamique nommée qui est définie dans un fichier include après include est inclus, par exemple:

 
require "/path/to/my/include.php"; 
echo $_VariableDefinedInInclude; // outputs the variable 
echo $GLOBALS["NameOfTheVariableDefinedInInclude"]; // nothing outputs? 

Toute idée pourquoi la variable est pas dans le tableau $ GLOBALS? Y at-il une fonction comme constante() mais pour les variables standard que je pourrais utiliser pour accéder dynamiquement à la variable par son nom?

Merci

+1

Je ne sais pas exactement quel code vous avez dans votre fichier include? Pourriez-vous développer ceci? –

+0

Lorsque vous incluez un fichier, il n'a rien à voir avec les globals. Il ajoute simplement le code comme s'il s'agissait d'un fichier. – PeeHaa

Répondre

0

Le tableau $ GLOBALS applique uniquement aux variables définies avec le mot-clé global. Si vous incluez un autre fichier, il est essentiellement le même que le code étant tous dans le même fichier. En d'autres termes, vous avez toujours accès à cette variable dans la même portée. Il n'est pas nécessaire d'utiliser $ GLOBALS ou quoi que ce soit. De plus, si cette variable est constante, vous pouvez utiliser const (PHP 5.3) ou define ('KEY', $ val) pour la définir comme une constante.

+0

La variable définie dans le fichier include est nommée dynamiquement. Je ne connais pas son nom mais j'ai une autre variable qui contient son nom. Je pourrais en faire une constante, ou une clé de tableau, mais ce serait gênant. Comment puis-je accéder à cette variable? Est-ce que ça va marcher? $ {$ nom_variable} Ou devrais-je évaluer ('return'. $ nom_variable. ';')? – Tom

+0

Peu importe, $$ variable_name fonctionne! – Tom

+0

Le code qui utilise '$$ variable_name' (ou bien le' $ {$ variable_name} ') est souvent mauvais. Pensez à envelopper les données dans votre fichier inclus dans une fonction qui le retourne ou si vous avez besoin d'une variable globale, créez un seul tableau contenant vos données afin que vous puissiez simplement accéder à votre tableau $ à la place des champs $$. – ThiefMaster

0

Étant donné que la variable est dynamiquement nommé, peut-être:

echo $GLOBALS[$GLOBALS["NameOfTheVariableDefinedInInclude"]]; 

fera l'affaire.