变量的作用域
通过前面章节的学习,我们知道变量只有在定义后才能够使用。但这并不意味着变量定义后就可以随时使用该变量。变量只有在其作用范围内才可以被使用,这个作用范围称为变量的作用域。在函数中定义的变量称为局部变量,在函数外定义的变量称为全局变量。具体如下所示。
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()函数被调用的次数,使函数中定义的变量不会在函数调用完成后被释放掉,保存了每次调用函数时改变的值。