1.global在整個頁面起作用。
2.static只在function和class內起作用。
global和$GLOBALS使用基本相同,但在實際開發中大不相同.
global在函數產生一個指向函數外部變量的別名變量,而不是真正的函數外部變量,一但改變了別名變量的指向地址,就會發生一些意料不到情況.
$GLOBALS[]確確實實調用是外部的變量,函數內外會始終保持一致.
PHP實例代碼如下:
- <?php
- // 比較global、GLOBALS、static
- $k = 0;
- function test1() {
- global $k;
- static $i = 0;
- echo 'i:', ++$i, '<br/>';
- echo 'k:', ++$k, '<br/>';
- }
- test1();
- test1();
- echo 'i:', $i, '<br/>';
- echo 'k:', $k, '<br/>';
- echo '------------------<br/>';
- function test2() {
- global $k;
- static $i = 0;
- echo 'i:', ++$i, '<br/>';
- echo 'k:', ++$k, '<br/>';
- }
- test2();
- test2();
- echo 'i:', $i, '<br/>';
- echo 'k:', $k, '<br/>';
- $m = 0;
- $n = 0;
- function test3() {
- global $m;
- echo 'm:', $m++ , '<br/>';
- echo 'n:', $GLOBALS['n']++ , '<br/>';
- unset($m, $GLOBALS['n']);
- }
- echo '------------------<br/>';
- test3();
- echo 'm:', $m, '<br/>';
- echo 'n:', $n, '<br/>';
- echo '------------------<br/>';
- static $x = 0;
- function test4() {
- echo 'x:', $x++ , '<br/>';
- }
- test4();
- /*
- 結果如下:
- i:1
- k:1
- i:2
- k:2
- i:
- k:2
- ------------------
- i:1
- k:3
- i:2
- k:4
- i:
- k:4
- ------------------
- m:0
- n:0
- m:1
- n:
- ------------------
- x:
- */
global關鍵字如果用在function內部,則說明這個function內用的這個變量是全局的,全局變量就是在整個頁面里都能起作用.
static就是表示靜態,所謂的靜態,其實是在function或者class內部而言的,function中static的變量,在funciton執行完之后,不會消失,可以在下次執行的時候繼續使用.
新聞熱點
疑難解答