学科分类
目录
PHP基础

变量的作用域

通过前面章节的学习,我们知道变量只有在定义后才能够使用。但这并不意味着变量定义后就可以随时使用该变量。变量只有在其作用范围内才可以被使用,这个作用范围称为变量的作用域。在函数中定义的变量称为局部变量,在函数外定义的变量称为全局变量。具体如下所示。

   function test()
   {
     $sum = 36;        // 局部变量
     return $sum;
   }
   $sum = 0;          // 全局变量
   echo test();        // 输出结果:36
   echo $sum;          // 输出结果:0

需要注意的是,默认情况下在函数中不能使用全局变量,同时局部变量的改变也不会对全局变量有任何影响,如示例中的$sum。

从前面的学习,我们知道在函数中定义的变量,在函数执行完成后会被释放。例如定义一个计数的函数num(),具体如下所示。

   function num()
   {
     $i = 1;
     echo $i;
     ++$i;
   }

从上述示例可知,不论调用多少次num()函数,输出的$i变量的值都依然为1,这是由于在每次调用该函数时,都重新为变量$i赋值为1。因此,若想要局部变量在函数执行完成后,依然保留局部变量的值,则可以利用static关键字在函数中声明静态变量。将上述示例中的第3行代码修改成如下形式:

static $i = 1;

修改完成后。第1次调用函数num()输出1,第2次调用函数num()会输出2,依次类推,就可以轻松得到num()函数被调用的次数,使函数中定义的变量不会在函数调用完成后被释放掉,保存了每次调用函数时改变的值。

点击此处
隐藏目录