PHP中全域資料的全名為超全域數組或超全域變量,是PHP中特殊定義的數組變數;超全域數組可以在腳本中的任何地方、任何作用域內都可以訪問,超全局數組變數是在全部作用域中始終可用的內建變數。
本文操作環境:Windows10系統、PHP8.1版、Dell G3電腦
#php全域數組全名為“超全域數組”或“超全域變數”,是PHP中特殊定義的數組變量,之所以稱為超全域數組是因為這些數組在腳本中的任何地方、任何作用域內都可以訪問,如函數、類別、文件等。
超全域數組變數是在全部作用域中始終可用的內建變數
PHP中的超全域數組包括以下幾個:
$GLOBALS
一個包含了全部變數的全域組合陣列。變數的名字就是數組的鍵。
使用var_dump($GLOBALS)列印,就可以看出$GLOBALS是一個包含了所有的一個全域組合陣列。
從 PHP 8.1.0 起,$GLOBALS 現在是全域符號表的唯讀副本。也就是說,全域變數不能透過副本進行修改。在先前的版本中,$GLOBALS 陣列和 PHP 陣列通常傳值的行為不一樣,全域變數可透過副本修改。
PHP 8.1.0 之前:
$a = 1;$globals = $GLOBALS; // 表面意义的按值复制$globals['a'] = 2; // $GLOBALS['a'] 的值也相应修改 var_dump($a);//运行结果: int(2)
從PHP 8.1.0 起:
$a = 1;$globals = $GLOBALS; //表面意义的按值复制$globals['a'] = 2; // $GLOBALS['a'] 的值不会改变(不再修改 $a) var_dump($a);//运行结果: int(1)
要恢復先前的行為,請迭代其副本並將每個屬性分配回$GLOBALS:
foreach ($globals as $key => $value) { $GLOBALS[$key] = $value;}
$_SERVER
#$_SERVER——伺服器和執行環境資訊。 $_SERVER是一個包含了諸如頭資訊(header)、路徑(path)、以及腳本位置(script locations)等等資訊的陣列。這個數組中的項目是由 Web 伺服器所建立。
$_GET
#透過 URL 參數傳遞給目前腳本的變數的陣列。注意:此陣列並非僅對 method 為 GET 的請求生效,而是針對所有帶有 query string 的請求。
$_POST
#預先定義的$_POST 變數用於收集來自method="post" 的表單中的值。
當 HTTP POST 請求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 時,會將變數以關聯陣列形式傳入目前腳本。
從帶有 POST 方法的表單發送的訊息,對任何人都是不可見的(不會顯示在瀏覽器的網址列),並且對發送訊息的量也沒有限制。
註解:然而,預設情況下,POST 方法的傳送訊息的量最大值為 8 MB(可透過設定 php.ini 檔案中的 post_max_size 進行變更)。
$_REQUEST
# 預設包含了 $_GET,$_POST 和 $_COOKIE 的陣列。由於安全的問題,建議盡量避免使用$_REQUEST。
$_COOKIE
#透過 HTTP Cookies 方式傳遞給目前腳本的變數的陣列。
$_SESSION
#目前腳本可用 SESSION 變數的陣列。
$_FILES
#透過 HTTP POST 方式上傳到目前腳本的項目的陣列。
$_ENV
#透過環境方式傳遞給目前腳本的變數的陣列。
這些變數被從 PHP 解析器的運行環境導入到 PHP 的全域命名空間。很多是由支援 PHP 運行的 Shell 提供的,不同的系統很可能運行著不同種類的 Shell,所以不可能有一個確定的清單。請查看你的 Shell 文件來取得定義的環境變數清單。
其他環境變數包含了 CGI 變量,而不管 PHP 是以伺服器模組還是 CGI 處理器的方式運作。
推薦學習:《PHP影片教學》
以上是php中全域數組是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!