在PHP中静态变量和全局变量有哪些不同?
程序员文章站
2022-03-25 10:36:46
...
● 全局变量作用域为定义处至源文件结尾,存储时期为定义后为其分配内存,程序退出后释放内存;
● 局部变量作用域为局部,存储时期为定义后分配内存,退出作用域后释放内存;
● 全局变量默认为静态变量,局部变量默认为自动变量,也可以声明为静态变量,静态变量和自动变量的区别是存储时期的区别,静态变量的存储时期是内存空间在程序运行期间都存在,程序退出才被释放;
● 自动变量内存空间在作用域内才存在,退出作用域后就被释放。
静态局部变量的特点:
1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它。倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值
2.静态局部变量只会初始化一次
3.静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。
4.当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。
代码如下:
function test() { static $var = 5; //static $var = 1+1;就会报错 $var++; echo $var . ' '; } test(); //2 test(); //3 test(); //4echo $var; //报错:Notice: Undefined variable: var
关于静态全局变量:
代码如下:
//全局变量本身就是静态存储方式,所有的全局变量都是静态变量 function static_global(){ global $glo; $glo++; echo $glo.'<br>'; } static_global(); //1 static_global(); //2 static_global(); //3 echo $glo . '<br>'; //3
所以静态全局变量使用并不多。
上面是我整理给大家的在PHP中静态变量和全局变量,希望今后会对大家有帮助。
相关文章:
一招搞定,php中闭包函数里面use的使用方法和区别,以及&引用的含义为你详细解答
以上就是在PHP中静态变量和全局变量有哪些不同?的详细内容,更多请关注其它相关文章!
上一篇: PHP的变量作用域和全局变量(图文教程)