Maison  >  Article  >  développement back-end  >  PHP utilise global pour définir une solution aux variables globales qui n'a aucun effet

PHP utilise global pour définir une solution aux variables globales qui n'a aucun effet

怪我咯
怪我咯original
2017-06-19 16:24:472625parcourir

La

variable définie par global est une variable globale. Par exemple, si la variable dans la fonction et la variable du même nom en dehors de la fonction ne sont pas la même variable dans. php, si nous utilisons global Si le nom de la variable qui est le même que celui externe est défini dans la fonction, alors c'est une variable Prenons quelques exemples pour illustrer.

Pour les débutants PHP, lorsque vous utilisez le mot-clé global, vous constaterez peut-être que la globalisation d'une variable en dehors d'une fonction au sein d'une fonction ne peut pas générer correctement la variable dans certains cas (c'est-à-dire que la variable globale n'est pas valide). Regardons un exemple simple et courant.

Ici, nous avons deux pages a.php et b.php.

Le code de la page b.php est le suivant :

 <?php 
    $site_name = &#39;CodePlayer&#39;; 
    function sayHi(){ 
        global $site_name; 
        echo "Hello! Welcome to $site_name !"; 
    } 
?>

Le code de la page a.php est le suivant :

<?php 
    function include_view_page(){ 
        include &#39;b.php&#39;; 
        sayHi();                     
    } 
    include_view_page(); 
?>

L'exemple ci-dessus est très simple. j'espère que lorsque nous visitons une page .php, nous pourrons afficher correctement la déclaration de bienvenue. Cependant, malheureusement, lorsque nous utilisons le navigateur pour accéder à la page a.php, nous constatons que le résultat est le suivant :

Hello! Welcome to !

Autrement dit, lorsque nous appelons la fonction sayHi() dans la fonction include_view_page(), b Le $site_name global dans la fonction sayHi() de la page .php n'est pas correctement reconnu et prend effet. Que se passe-t-il?

En fait, lorsque l'on inclut la page b.php dans la fonction include_view_page(), la variable $site_name de la page b.php équivaut à être stockée dans le scope au sein de la fonction include_view_page(). Comme nous le savons tous, la globalisation d'une variable au sein d'une fonction établit en fait une référence à la variable globale de la page au sein de la fonction. Dans notre exemple, la variable $site_name n'est qu'une variable locale dans la fonction include_view_page() pour a.php, donc la variable ne peut pas être globalisée. Naturellement, nous ne pouvons pas obtenir les variables et les valeurs de variable correctes lorsque nous effectuons des appels associés. .

En PHP, nous devons particulièrement prêter attention au problème mentionné ci-dessus de l'inclusion d'une page dans une fonction, qui entraîne la modification de la portée de la variable dans la page . Afin d'éviter cette situation, nous devrions essayer de réduire les appels d'inclusion à plusieurs niveaux et essayer de ne pas utiliser d'inclusion dans les fonctions. De plus, on peut également déclarer $site_name comme variable globale dans la page b.php. Le code est le suivant :

<?php 
global $site_name; 
$site_name = &#39;CodePlayer&#39;; 
function sayHi(){ 
    global $site_name; 
    echo "Hello! Welcome to $site_name !"; 
} 
?>

Par exemple, pour référencer des variables globales au sein d'une fonction, regardez d'abord le. code suivant :

<?php  
$var1 = "#####";  
$var2 = "&&&&&"; 
function global_references($use_globals)  
{  
global $var1, $var2;  
if (!$use_globals) {  
$var2 =&$var1; //1 
} else {  
$GLOBALS["var2"] =&$var1; //2 
}  
} 
global_references(false);  
echo "var2 is set to &#39;$var2&#39;<br/>";  
global_references(true);  
echo "var2 is set to &#39;$var2&#39;<br/>";  
?>

Le résultat de sortie est le suivant :

var2 is set to &#39;&&&&&&#39; 
var2 is set to &#39;#####&#39;

est visible dans le code ci-dessus : $var2 =&$var1 //1 n'est visible qu'à l'intérieur. la fonction.

Et $GLOBALS["var2"] =&$var1 //2 est visible dans la portée globale.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn