美文网首页
php全局变量

php全局变量

作者: 全栈coder | 来源:发表于2016-10-26 17:47 被阅读215次
  <?php
     $name = 'stalker';
     function test() {
            $name = "sky";
      }
  test();
   echo "My name is ".$name.'<br>';
?>    

以上代码的运行结果相信大家都能看出来 *My name is stalker * 。
接下来我修改代码:

   <?php
     global   $name;
     $name = 'stalker';    //注意:不能在用global声明变量的同时给变量赋值。
     function test() {
            $name = "sky";
      }
  test();
   echo "My name is ".$name.'<br>';
?> 

代码运行的结果仍然是 *My name is stalker * ,好奇怪?为什么会是这样?
原来,global的正确用法是:"在一个函数中引入外部的一个变量,如果该变量没有通过参数传递进来,那么就通过global引入进来。" 也就是说,当一个函数引用一个外部变量时,可以在函数内通过global来声明该变量,这样该变量就可以在函数中使用了(相当于当作参数传递进来)。那么,再次修改代码:

  <?php
     $name = 'stalker';
     function test() {
            global   $name;
            $name = "sky";
      }
  test();
   echo "My name is ".$name.'<br>';
?>  

这次的运行结果是:my name is sky,综上,global的作用就相当于传递参数,在函数外部声明的变量,如果在函数内想要使用,就用global来声明该变量,这样就相当于把该变量传递进来了,就可以引用该变量了。
除了使用global参数定义外,还可以使用超全局变量$GLOBAL:
接下来一个例子:

 <?php
         $var1 = 1;
          function testa() { 
               unset($GLOBALS['var1']);
          }
         testa();
         echo $var1 . "<br />";

         $var2 = 1;
         function testb() {
               global $var2; 
               unset($var2);
          }
         testb();
         echo $var2;
        ?>

输出结果是$var1不存在,而$var2的值为1。
这就证明,$var2只是别名引用,本身的值没有受到任何的改变。也就是说global $var其实就是$var = &$GLOBALS['var'],调用外部变量的一个别名而已!

相关文章

网友评论

      本文标题:php全局变量

      本文链接:https://www.haomeiwen.com/subject/jbtjuttx.html