La portée d'une variable est le contexte dans lequel elle est définie (c'est-à-dire sa portée effective). En JavaScript, il n'existe pas de concept de portée variable. Un concept similaire peut être celui de portée. Cependant, comme JavaScript utilise une portée lexicale, qui fait référence à la position à laquelle la variable est déclarée ; et que PHP n'a pas de déclaration de variable, la variable équivaut à déclarer la variable lorsqu'une valeur lui est attribuée pour la première fois. Les deux ne sont donc pas identiques. Cet article présentera en détail la portée des variables en PHP.
1. Variables locales
Les variables locales sont des variables déclarées dans une fonction, et leur portée est limitée à l'intérieur de la fonction. Les paramètres d'une fonction sont également des variables locales. La différence est que la valeur du paramètre de la fonction provient de la valeur transmise lors de son appel. Après l'exécution, toutes les variables dynamiques à l'intérieur de la fonction seront libérées.
<?php function a($b){ $c = 1; echo "$b+$c = " . ($b+$c) . '<br />'; } a(2);//输出3 echo $b+$c;//函数外部的非法访问,报notice错误,并输出0 ?>
2. Variables globales
Les variables définies en dehors de la fonction sont appelées variables globales et leur portée s'étend du début de la variable définie à la fin du fichier programme. .
De plus, les variables globales ne peuvent pas être appelées directement dans une fonction. Vous devez utiliser le mot-clé global. Vous pouvez également utiliser $GLOBALS au lieu de global. $GLOBALS est une variable superglobale.
<?php //示例1 $a = 1; $b = 2; function Sum(){ global $a, $b; $b = $a + $b; } Sum(); echo $b;//输出的结果是3 //示例2 $c = 1; $d = 2; function Sum() { $GLOBALS['d'] = $GLOBALS['c'] + $GLOBALS['d']; } Sum(); echo $d;//输出3 ?>
3. Variables statiques
Les variables statiques n'existent que dans la portée de la fonction locale, mais lorsque l'exécution du programme quitte cette portée, sa valeur n'est pas perdue. Les variables statiques sont déclarées avec static, et celles qui ne sont pas déclarées statiquement sont des variables dynamiques par défaut. Une fois la fonction exécutée, les variables statiques internes sont déjà stockées en mémoire. Elle n'est initialisée que lors du premier appel de la fonction lors de l'exécution du script.
<?php function test() { static $a = 0; echo $a; $a++; } test();//输出0 test();//输出1 ?>
Les variables statiques fournissent également un moyen de gérer les fonctions récursives. Une fonction récursive est une fonction qui s'appelle elle-même. Soyez prudent lorsque vous écrivez des fonctions récursives, car elles peuvent réapparaître indéfiniment. Vous devez vous assurer qu'il existe des moyens adéquats pour mettre fin à la récursion. La fonction simple suivante compte récursivement jusqu'à 10, en utilisant la variable statique $count pour déterminer quand arrêter
<?php function test() { static $count = 0; $count++; echo $count; if ($count < 10) { test(); } $count--; } ?>
Recommandations associées :
Portée des variables php, variables globales php et variables statiques
Introduction à la variable php scope_Tutoriel 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!