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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM