2015-09-18 3 views
1

j'ai une variable globale commene peut pas affecter la valeur à variable globale

<?PHP 
function PrintVariable($str){ 
    global ${"check" . $str} = "some value"; 
    echo $checkmap;  
} 
PrintVariable('map'); 

mais je reçois cette erreur:

Parse error: syntax error, unexpected '=', expecting », ' ou ';' dans C: \ wamp \ www \ php \ index.php sur la ligne 3

après avoir enlevé la global du tout code fonctionne bien, mais je dois créer global à cette fonction.

Répondre

3

Il n'y a pas d'instruction combinée "déclarer global et attribuer une valeur" dans php.
Vous devez le faire en deux étapes, par ex.

<?php 
function foo($str) { 
    global ${"check" . $str}; 
    ${"check" . $str} = "some value"; 
} 

foo('bar'); 
echo $checkbar; 

... mais ce que vous devriez vraiment faire est d'éviter les globals. Avec le mot clé "global", vous ne pouvez faire référence qu'à une variable et ne pas en définir la valeur.

+0

Merci VolkerK et est-il encore mondiale? –

+0

@MonaCoder Oui c'est global. + Vous pouvez utiliser le tableau '$ GLOBALS', alors vous pouvez l'assigner dans une instruction – Rizier123

+3

Comme le montre l'exemple: $ checkbar est accessible en dehors de' function foo() ', donc oui, la fonction a pollué avec succès l'espace de noms global. ... – VolkerK

3

Votre code serait:

<?PHP 
function PrintVariable($str){ 
    global ${"check" . $str}; 
    ${"check" . $str} = "some value"; 
    echo $checkmap; // outputs: some value 
} 
PrintVariable('map'); 
echo $checkmap; // outputs: some value 

Voir:

http://php.net/language.variables.scope

Configuration class - Get configuration array from the function string argument

+0

Merci Christopher_Johns et est-ce encore global? –

+0

C'est encore global. Vous pouvez l'appeler (en dehors de la fonction) comme ** $ checkmap ** comme s'il s'agissait d'une variable normale. –