首页 >后端开发 >php教程 >在PHP中静态变量和全局变量有哪些不同?

在PHP中静态变量和全局变量有哪些不同?

亚连
亚连原创
2018-05-17 14:06:173603浏览

● 全局变量作用域为定义处至源文件结尾,存储时期为定义后为其分配内存,程序退出后释放内存;

● 局部变量作用域为局部,存储时期为定义后分配内存,退出作用域后释放内存;

● 全局变量默认为静态变量,局部变量默认为自动变量,也可以声明为静态变量,静态变量和自动变量的区别是存储时期的区别,静态变量的存储时期是内存空间在程序运行期间都存在,程序退出才被释放;

● 自动变量内存空间在作用域内才存在,退出作用域后就被释放。

静态局部变量的特点:

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.&#39;<br>&#39;;
}
static_global(); //1
static_global(); //2
static_global(); //3
echo $glo . &#39;<br>&#39;; //3

所以静态全局变量使用并不多。

上面是我整理给大家的在PHP中静态变量和全局变量,希望今后会对大家有帮助。

相关文章:

PHP的变量作用域和全局变量(图文教程)

一招搞定,php中闭包函数里面use的使用方法和区别,以及&引用的含义为你详细解答

详细讲解php 类、方法关键字教程

以上是在PHP中静态变量和全局变量有哪些不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn