Comme nous le savons tous, dans les fonctions PHP, si vous souhaitez utiliser des variables globales, l'une consiste à utiliser la variable superglobale$GLOBALS
, et l'autre consiste à utiliser la déclaration de mot-clé global
dans la fonction, en utilisant Tout le monde connaît la méthode de la super variable globale $GLOBALS. Aujourd'hui, parlons de l'utilisation de la méthode globale pour déclarer des variables.
Regardons l'exemple suivant :
$a = 1; $b = 2; function test() { global $a, $b; } test();
Quand on exécute la fonction test(), quel est l'état des variables en mémoire ? Comme le montre la figure ci-dessous
nous déclarons la fonction de test Lorsque la fonction test() est appelée, global déclarera deux variables locales $a, $b dans la fonction. , et Pointez respectivement sur les variables globales $a et $b. À l'heure actuelle, les variables temporaires $a et $b sont équivalentes aux références aux variables globales $a et $b. Ainsi, lorsque l'on modifie les valeurs des variables locales $a et $b dans la fonction, cela équivaut à modifier la valeur de la variable globale.
$a = 1; $b = 2; function test() { global $a, $b; $a = 11; $b = 12; unset($a); unset($b); } test(); echo $a; echo '<br>'; echo $b;
Imprimer la sortie sur le navigateur :
11 22
Le code ci-dessus utilise également unset(), et les valeurs des variables globales $a, $b peuvent être affichées via echo sortie. Cela montre également que $a et $b déclarés via le mot-clé global dans la fonction test() ne sont que des variables locales, et unset() déconnecte uniquement les références des variables locales et des variables globales.
Regardons une autre situation. Et si les variables que nous déclarons dans la fonction de test ne sont pas dans les variables globales ?
Parlons d'abord de la conclusion : Si une variable déclarée à l'aide du mot-clé global dans une fonction n'a pas de variable du même nom dans la portée globale, alors une variable globale du même nom le fera être créé en premier, puis une variable locale sera créée dans la fonction. Pointez la référence de la variable globale vers la variable locale.
function test() { global $a, $b; $a = 11; $b = 22; unset($a); unset($b); } echo $a; echo '<br>'; echo $b;
Sortie via le navigateur :
11 22
Dans le code ci-dessus, nous utilisons global pour déclarer les variables $a, $b dans la fonction de test, bien que le la portée globale $a et $b ne sont pas déclarés, mais global créera toujours les variables globales $a et $b en premier, puis créera $a, $b dans la fonction de test, puis pointera la référence de la variable globale vers la variable locale de la fonction de test. Ainsi, même si nous supprimons $a et $b dans la fonction, nous pouvons toujours afficher $a et $b une fois la fonction exécutée, car il y a déjà deux variables dans la variable globale.
On peut donc enfin tirer la conclusion suivante :
Lors de l'utilisation de global pour déclarer une variable dans une fonction, il vérifiera d'abord s'il existe une variable du même nom dans le portée globale, et si c'est le cas, elle le fera. La référence de cette variable globale pointe vers une variable locale du même nom déclarée à l'aide de global. S'il n'y a aucune variable portant le même nom dans la portée globale, créez d'abord une variable globale portant le même nom, puis créez une variable locale, puis pointez la référence de la variable globale vers la variable locale.
Tutoriels associés : Tutoriel vidéo PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!