购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.8 活用静态变量

在PHP脚本函数内部创建的局部变量,执行时是存在的,当执行完毕后会在内存里立即删除,再次运行函数时会重新创建。这样的优点是:确保函数每次执行是完整独立的,以免混乱。

但我们有时会想在函数调用时保存上次局部变量执行的结果,以便下次执行时使用,这时就可以用静态变量来实现。

声明一个静态变量只需在函数体中变量前面加入关键字static声明,并初始化一个值,如代码清单1-8所示:

代码清单1-8 使用静态变量


<php
function myFunction() {  
    static $myVariable = 0
}>

通过一个实例比较静态变量是如何有用的,我们先编写一个自定义函数,它的功能是返回函数被调用的次数。如代码清单1-9所示:

代码清单1-9 函数内值的累加


<php
function createWidget(){
    $numWidgets = 0
    return++$numWidgets
}
echo "Creating some widgets...<br />"
echo createWidget() . " created so far.<br />"
echo createWidget() . " created so far.<br />"
echo createWidget() . " created so far.<br />"
   >

这段代码执行后结果如下:


Creating some widgets... 
1 created so far. 
1 created so far. 
1 created so far.

我们三次调用createWidget()函数,每一次函数被调用时,内部的$numWidgets变量都会从1开始,而不是每次累加,没有达到想要的预期结果。

而使用静态变量,就可以在每次函数调用时使用它上次运算的值。下面修改一下代码,将局部变量声明为静态变量,如代码清单1-10所示:

代码清单1-10 使用函数内使用静态变量累加


<php
function createWidget(){
    static $numWidgets = 0
    return ++$numWidgets
}
echo "Creating some widgets...<br / >"
echo createWidget() . " created so far.<br / >" 
echo createWidget() . " created so far.<br / >" 
echo createWidget() . " created so far.<br / >"
   >

现在,脚本会输出我们预想的结果:


Creating some widgets... 
1 created so far. 
2 created so far. 
3 created so far.

综上所述,静态变量在函数调用时,保存了上次运行的值。当脚本运行完毕退出时,静态变量也会销毁,这一点和全局、局部变量特性相同。 14PTolIQD1O/Uczd9XcLrpeADu6jWyVOy36JDuYASNwL1u+eFjjzwSmcew4siLHS

点击中间区域
呼出菜单
上一章
目录
下一章
×