谁知道PHP中静态变量是什么意思?急!

如题所述

静态变量,简单的说,就是一种在特定范围内一直存在的变量,你可以把全局变量当作一种静态变量,它的值在代码运行期间一直存在。


通常来说,静态局部变量大多用于特殊场合里,比如,当在某函数中,希望每次运行函数时,都使用上次函数的结果,此时除使用全局变量外,就可以使用静态变量。


以下是关于静态局部变量特点的一些资料说明:


1. 不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它。倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。


2. 静态局部变量只会初始化一次。


3. 静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。


4. 当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。


PHP里,定义静态变量使用 static 进行修饰。比如 

static $avar= 0;追问

简单说说

追答

请对比以下代码运行结果:


<?php
function static_zdy()
{
    static $message = 0; //初始化静态变量
    $message += 1;
    echo $message;
}
function zdy()
{
    $message = 0; //非静态变量
    $message += 1;
    echo $message;
}
for ($i = 0; $i < 10; $i++)
    zdy(); //输出普通定义变量结果
echo "<br>";
for ($i = 0; $i < 10; $i++)
    static_zdy(); //输出静态变量结果
?>


运行结果:


1111111111
12345678910

追问

静态变量会累加吗

追答

1、不管是静态还是非静态,变量就是变量。

2、累加不累加,是根据你自己的需求来的,只是对变量的一种使用。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网