天天看點

PHP全局變量global與$GLOBAL詳解

總結:

A:1全局變量相當于有3個變量,函數外部的變量,函數内部的變量,及$GLOBAL的超全局變量。

      ----$GLOBAL是全局唯一的,而$var在為全局變量的别名。

B:無論函數内部外部,隻要曾經聲明過全局變量,則$GLOBAL為全局的,無需再次聲明;

C:在函數内部unset  $var1 不會影響外部的變量,以及$GLOBAL['var1'];

    ----在函數内部的變量 global $var1 應是全局變量在函數内的一個别名,

D:在函數外部unset($var1),$GLOBAL['var1']依然存在。

E:在函數外部 unset($GLOBALS['var1']) 後,$var1仍然存在;

F:如果在函數外部聲明一個全局變量global $var,則$GLOBAL['var'] 指向同一位址。但是函數内部的$var 與其沒有關系,除非使用global傳遞進來。

G:如果在函數内部聲明一個全局變量global $var,則$GLOBAL['var'] 指向同一位址。但是外部的 $var 與其沒有關系,除非使用global 傳遞過來。

1、如果想在PHP中使用全局變量,可參考下圖:

---需要在外部用global聲明,同時在函數内部進行聲明,否則在函數内部會當局部變量。

PHP全局變量global與$GLOBAL詳解

2、在外部不用global則外部的就是不是全局變量,無法在函數内部使用:

----内部用了關鍵字global,在内部或外部$global['var1']、$global['var2]均為全局變量;

PHP全局變量global與$GLOBAL詳解

3、注釋函數内部的global,則變量$var1 $var2 在函數内部的為局部變量,與外部互補幹涉。則$GLOBALS為全局變量;

PHP全局變量global與$GLOBAL詳解

4、當不用global時,外部變量無法在函數内使用,内部變量無法影響外部函數,且無$GLOBALS可用;

PHP全局變量global與$GLOBAL詳解

5、unset($GLOBALS) 隻會unset  $GLOBALS,函數内部的全局變量不受影響;

PHP全局變量global與$GLOBAL詳解

6、在函數内部unset 變量,隻是把内部的變量unset掉了。

-----函數内的全局變量隻是一個全局變量的别名而已。

PHP全局變量global與$GLOBAL詳解

7、&引用,就是改變了變量的位址值(變量的引用傳遞)。

--在函數中把$GLOBAL['var2']指向了 $GLABAL['var1'],是以在函數内部時均一緻;

--在函數外部var1 與 $GLOBALS['var1']一緻,是以這3個變量一緻。全局變量var1在函數内外時均一緻;

--在函數内部的var2 與外部的var2 為同一個變量,在内外時均一緻;

--此時隻是把 $GLOBALS['var2']的因為修改為了var1,其它變量的值均為變化。

PHP全局變量global與$GLOBAL詳解