作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。下面我们就为大家介绍一下php变量的作用域。

推荐教程:php入门视频教程

简单来说有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

更多相关文章

  1. php主键的作用
  2. php中变量赋值的方式
  3. php header的作用
  4. php构造函数的作用
  5. php中break的作用
  6. 在php当中常量和变量的区别
  7. php注释的作用
  8. 详细介绍php迭代器的作用
  9. 超详细分析php docker的原理及作用

随机推荐

  1. Android开发,使用xml drawable制作带边框
  2. android fragment(android.support.v4.app
  3. Android回炉系列之Surfaceflinger
  4. android 自定义侧边栏
  5. 查看基于Android(安卓)系统单个进程内存
  6. Building the System Android
  7. ListView美化(2)-android:cacheColorHint
  8. android软键盘挡住输入框问题解决方法
  9. android Log图文详解(Log.v,Log.d,Log.i,
  10. afinal - afinal 是一个android的 orm 和