PHP 中一個(gè)美元符號(hào)后面跟上一個(gè)變量名稱,即表示一個(gè)變量。變量的名稱是對(duì)大小寫敏感的。變量名與 PHP 中其它的標(biāo)簽一樣遵循相同的規(guī)則。一個(gè)有效的變量名由字母或者下劃線開(kāi)頭,后面跟上任意數(shù)量的字母,數(shù)字,或者下劃線。按照正常的正則表達(dá)式,它將被表述 為:'[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*’
AD:
PHP 超全局變量
$GLOBALS
包含一個(gè)引用指向每個(gè)當(dāng)前腳本的全局范圍內(nèi)有效的變量。該數(shù)組的鍵標(biāo)為全局變量的 名稱。從 PHP 3 開(kāi)始存在 $GLOBALS 數(shù)組。
$_SERVER
變量由 Web 服務(wù)器設(shè)定或者直接與當(dāng)前腳本的執(zhí)行環(huán)境相關(guān)聯(lián)。類似于舊數(shù)組 $HTTP_SERVER_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_GET
經(jīng)由 HTTP GET 方法提交至腳本的變量。類似于舊數(shù)組 $HTTP_GET_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_POST
經(jīng)由 HTTP POST 方法提交至腳本的變量。類似于舊數(shù)組 $HTTP_POST_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_COOKIE
經(jīng)由 HTTP Cookies 方法提交至腳本的變量。類似于舊數(shù)組 $HTTP_COOKIE_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_FILES
經(jīng)由 HTTP POST 文件上傳而提交至腳本的變量。類似于舊數(shù)組 $HTTP_POST_FILES 數(shù)組(依然有效,但反對(duì)使用)。詳細(xì)信息請(qǐng)參閱 POST 方法上傳。
$_ENV
執(zhí)行環(huán)境提交至腳本的變量。類似于舊數(shù)組 $HTTP_ENV_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_REQUEST
經(jīng)由 GET,POST 和 COOKIE 機(jī)制提交至腳本的變量,因此該數(shù)組并不值得信任。所有包含在該數(shù)組中的變量的存在與否以及變量的順序均按照 php.ini 中的 variables_order 配置指示來(lái)定義。該數(shù)組沒(méi)有直接模擬 PHP 4.1.0 的早期版本。參見(jiàn) import_request_variables()。
注意
自 PHP 4.3.0 起,$_FILES 中的文件信息不再存在于 $_REQUEST 中。
注: 當(dāng)運(yùn)行于命令行模式時(shí),這個(gè)數(shù)組將不會(huì)包含 argv 和 argc 入口;它們已經(jīng)存在于數(shù)組 $_SERVER 中。
$_SESSION
當(dāng)前注冊(cè)給腳本會(huì)話的變量。類似于舊數(shù)組 $HTTP_SESSION_VARS 數(shù)組(依然有效,但反對(duì)使用)。詳細(xì)信息,請(qǐng)參照 Session 處理函數(shù)章節(jié)。
變量范圍
變量的范圍即它定義的上下文背景(譯者:說(shuō)白了,也就是它的生效范圍)。大部分的 PHP 變量只有一個(gè)單獨(dú)的范圍。這個(gè)單獨(dú)的范圍跨度同樣包含了 include 和 require 引入的文件。范例:
<?php $a = 1; include "b.inc"; ?> |
這里變量 $a 將會(huì)在包含文件 b.inc 中生效。但是,在用戶自定義函數(shù)中,一個(gè)局部函數(shù)范圍將被引入。任何用于函數(shù)內(nèi)部的變量按缺省情況將被限制在局部函數(shù)范圍內(nèi)。范例:
<?php $a = 1; /* global scope */ function Test() { echo $a; /* reference to local scope variable */ } Test(); ?> |
這個(gè)腳本不會(huì)有任何輸出,因?yàn)?echo 語(yǔ)句引用了一個(gè)局部版本的變量 $a,而且在這個(gè)范圍內(nèi),它并沒(méi)有被賦值。你可能注意到 PHP 的全局變量和 C 語(yǔ)言有一點(diǎn)點(diǎn)不同,在 C 語(yǔ)言中,全局變量在函數(shù)中自動(dòng)生效,除非被局部變量覆蓋。這可能引起一些問(wèn)題,有些人可能漫不經(jīng)心的改變一個(gè)全局變量。PHP 中全局變量在函數(shù)中使用時(shí)必須申明為全局。