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']。