global,local,static的区别
1、在函数内部使用global关键字定义的变量可以成为全局变量,如果该变量已经被定义了,那么他的值就是原来的值,否则就是一个新的全局变量(一句话:已存在就不再创建):
1 <?php 2 $a=1; 3 function run(){ 4 global $a; 5 $a=10; 6 $a++; 7 } 8 run(); 9 echo "Global variable a=$a \n"; 10 $b=100; 11 function run1(){ 12 $b=10; 13 $b+=10; 14 } 15 run1(); 16 echo "variable b=$b\n"; 17 function run2(){ 18 global $c; 19 $c=10; 20 function innerRun0(&$c){ 21 $c=20; 22 } 23 innerRun0($c); 24 var_dump($c); 25 function innerRun1(){ 26 global $c; 27 $c=30; 28 } 29 innerRun1(); 30 var_dump($c); 31 } 32 run2(); 33 ?>
输出结果:
Global variable a=11 variable b=100 int(20) int(30)
如果在函数内部嵌套定义了另外一个函数,要想使用并改变父类函数中变量中的值,可以使用引用传递的方式(可以理解成C++中的引用);
2.static和c语言中的static使用方式是一样的,函数中使用它之后,当函数执行完毕之后,该变量的空间不会被立即回收,而且只被初始化一次:
1 function run(){ 2 static $a=10; 3 $a++; 4 var_dump($a); 5 } 6 run(); 7 run(); 8 run();
输出结果:
int(11) int(12) int(13)
3、local顾名思义,就是局部变量。在函数内部声明得得变量就是局部量量,意思就是他的访问范围是在该函数内部。对应的是global变量,实在函数外部定义的变量,可以全局访问,如果在一个函数内部想要访问到全局变量的话可以使用global,具体方式上面已经提到;还可以使用GLOBALS['globalValueName']。