background image

我们讨论的最后一种变量作用域称为静态(static )作用域。函数参数在函数退出时会撤
销,与声明为函数参数的变量不同,静态变量在函数退出时不会丢失值,并且再次调用
此函数时还能保留这个值。在变量名前面加上关键字 STATIC 就可以声明一个静态变量:
STATIC $somevar
考虑一个例子:

 

function keep_track() { 

   STATIC $count  = 0;

   $count++;

   print $count;

   print "<br>";

}

keep_track();

keep_track();

keep_track();

这个脚本的输出会是什么?如果变量$count 没有指明为静态(相应地,$count 就是一个局
部变量),输出结果会是如下所示:

 

1

1

1

但是,因为$count 是静态的,他会在每次执行函数时保留前面的值。所以输出如下:

 

1

2

3

    静态作用域对于递归函数很有用。递归函数是一个功能强大的编程概念,他是一个可
以重复调用自身的函数,知道满足条件位置。