php中全域性陣列是什麼意思

2022-09-20 18:02:10

PHP中全域性資料的全稱是超全域性陣列或者超全域性變數,是PHP中特殊定義的陣列變數;超全域性陣列可以在指令碼中的任何地方、任何作用域內都可以存取,超全域性陣列變數是在全部作用域中始終可用的內建變數。

php零基礎到就業直播視訊課:進入學習
程式設計師必備介面測試偵錯工具:

本文操作環境:Windows10系統、PHP8.1版、Dell G3電腦

php中全域性陣列是什麼意思

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中全域性陣列是什麼意思的詳細內容,更多請關注TW511.COM其它相關文章!