在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類型的數據。