Blogger Information
Blog 9
fans 1
comment 1
visits 12034
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP的变量作用域
大象爱好者的博客
Original
1300 people have browsed it

   

 简单来说有3种作用域

              局部作用域      全局作用域     超全局作用域

              对应有3种变量:局部变量   全局变量      超全局变量

局部作用域和局部变量

       就是函数内部的作用域范围,其中的定义的变量就是局部变量(包括形参也是局部变量)。

       局部变量只能在其函数内部访问。

       局部变量在函数调用结束时,会被自动销毁(可以理解为函数执行结束,该执行空间也被销毁了)。

      

         由此可见,函数外部不能访问内部的局部变量。   

静态变量:一个特殊的局部变量

          含义:

            在函数内部,使用static关键字修饰的变量。

           形式:

                    function  XXX( .... ){

                            static  $s1 = 10;  //此时,$s1就是静态变量

                           ......

                      }

          静态变量的特点:

                     静态局部变量的值不会在函数调用结束时被销毁,而是会一直保留。

         对比:非静态的局部变量在函数调用结束时就会被销毁!

                   也就是说,当再次调用函数时,该变量(的值)还能继续使用。


全局作用域与全局变量

         就是函数外部范围的作用域,其中定义的变量就是全局变量。

         全局变量只能在其所在的全局作用域中可以直接使用(访问)。

超全局作用域与超全局变量  

         包括局部作用域和全局作用域的整个作用域范围。

         超全局变量可以在所有范围中使用(访问)。

         实际上,只有有限的10来个系统预定义变量是超全局变量,包括:$_GET, $_POST, $_REQUEST等。

         所以,系统预定义变量,也被统称为超全局变量。

一个特别的超全局变量:$GLOBALS

       它也是一个数组,其中存储了我们自己定义的所有全局变量。

       每个全局变量的变量名,就是$GLOBALS数组的一个单元。

     比如:

       在全局作用域中定义如下变量:

               $v1 = 1;   //这一行执行,就有了一个这个:$GLOBALS[‘v1’], 其值为1

              $v2 = ‘abc’;  //这一行执行,就有了一个这个:$GLOBALS[‘v2’], 其值为’abc’

              $v3 = true;  //这一行执行,就有了一个这个:$GLOBALS[‘v3’], 其值为true

     

    作用:

         可以让我们在局部作用域范围中,使用全局变量。

   演示如下:

               $v1 = 10;  //全局变量

               function  func1(  ){

                          echo  $GLOBALS[‘v1’]; //输出10;

                          echo  $v1;    //报错:变量v1未定义

                          $s1 = $GLOBALS[‘v1’] * 5; //结果为50;

                         $s2 = $v1 * 5;    //报错:变量v1未定义

              }

     

一个特别的的关键字:global

             作用:

                      用于在局部作用域中,修饰一个跟全局变量同名的局部变量。

                      此时该局部变量也可以使用全局变量的值了——实际上他们其实是类似变量引用关系。

                      其作用类似:$GLOBALS

      $a = 10;
      function sum(){
          global $a ;  //全局变量的引用的别名
          $a++;
          $b = $a + 1;
          echo $b;
      } 
      sum(); //  12
      echo $a ; //  11


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post