在PHP指令碼中變數主要有:內建超級全域變數,一般的變數,常量,全域變數,靜態變數等等,我們在使用它們的時候除了要正確地知道它們的文法以外,更重要的是,我們要知道它們在本質上的區別與聯絡—即它們的範圍的問題。
1.內建超級全域變數可以在指令碼的任何地方使用和可見。即是說,如果我們在一個PHP頁面中改變了其中的一個值,那麼在其他PHP頁面中使用時,它的值也會發生改變。
2.常量一旦被聲明將可以在全域可見,也就是說,它們可以函數內外使用,但是這僅僅限於一個頁面之中(包含我們通過include和include_once)包含進來的PHP指令碼,但是在其他的頁面之中就不能使用了。
3.在一個指令碼中聲明的全域變數在整個指令碼中是可見的,但不是在函數內部,在函數內部的變數如果與全域變數名稱相同,以函數內部的變數為準。
4.函數內部使用的變數聲明為全域變數時,其名稱要與全域變數的名稱一致,在這樣的情況下,我們就可以在函數中使用函數外部的全域變數了,這樣就可以避免上一種因為函數內部的變數與外部的全域變數名稱相同而覆蓋了外部變數這樣的情況。
5.在函數內部建立並聲明為靜態變數無法在函數外部可見,但是可以在函數的多次執行過程中保持該值,最常見的情況就是在函數的遞迴執行的過程之中。
6.在函數內部建立的變數對函數來說是本地的,而當函數終止時,該變數也就不存在了。
超級全域變數的完整列表如下:
1.$GOBALS 所有全域變數數組
2.$_SERVER 伺服器環境變數數組
3.$_POST 通過POST方法傳遞給該指令碼的變數數組
4.$_GET 通過GET方法傳遞給該指令碼的變數數組
5.$_COOKIE cookie變數數組
6.$_FILES 與檔案上傳相關的變數數組
7.$ENV 環境變數數組
8.$_REQUEST 所有使用者輸入的變數數組包括$_GET $_POST $_COOKIE 所包含的輸入內容
9.$_SESSION 會話變數數組
我們要注意的是:變數和常量另一個重要的差異是:常量只可以定義boolean(布爾型),integer(整型),float(浮點型) 和 string(字串型)資料,但不能定義 resource類型的資料。