超級變量,又名超級全局變量,是PHP內置的變量,這些變量在代碼的任意位置都能正常使用
9種超級變量
目前,PHP提供了9種超級變量:
變量名 | 類型 | 存放的內容 |
---|---|---|
$GLOBALS |
數組 | 存放了所有的全局變量 |
$_SERVER |
數組 | 請求頭信息以及服務器環境信息 |
$_GET |
數組 | 通過GET請求傳遞給服務器的鍵值對 |
$_POST |
數組 | 通過POST請求傳遞給服務器的鍵值對 |
$_COOKIE |
數組 | COOKIE數組 |
$_REQUEST |
數組 | 包含所有$_GET 、$_POST 、$_COOKIE 的數據 |
$_SESSION |
數組 | SESSION數組 |
$_FILES |
數組 | 與文件上傳相關的數組 |
$_ENV |
數組 | 環境變量數組 |
從上表中可以看出,無論是什么超級變量,它們的數據類型都是數組。
上表中的某些超級變量,屬於后面的知識,本文僅講解其中一部分超級變量
$GLOBALS
這個超級變量很有意思,它里面存放了所有的全局變量
在之前的課程中,你學習過全局變量,全局變量就是定義在函數體之外的變量
也就是說,當我們創建一個全局變量的時候,實際上,就是往超級變量$GLOBALS中寫入了一個數據
舉一個簡單的例子,看下面的代碼:
$a = 3;
$b = 'hello';
這段代碼定義了兩個全局變量a和b,這兩句代碼運行后,就相當於向超級變量$GLOBALS中,加入了兩個鍵值對:
運行后,$GLOBALS數組的內容:
鍵 | 值 |
---|---|
a | 3 |
b | hello |
既然是這樣,那我們能不能使用超級變量$GLOBALS
來訪問全局變量呢?當然可以!
$a = 3;
$b = 'hello';
echo $GLOBALS['a'];//等效於 echo $a,輸出3
echo $GLOBALS['b'];//等效於 echo $b,輸出hello
同樣的,我們也可以使用超級變量$GLOBALS
來創建全局變量
$GLOBALS['a'] = 3;//等效於 $a = 3
$GLOBALS['b'] = 'hello'; //等效於$b = 'hello'
echo $a;//輸出3
echo $b;//輸出hello
$_SERVER
該變量中存放的不僅僅是請求頭中的數據,還包含一些客戶端信息和服務器信息
$_SERVER數組中包含了大量的鍵值對,你可以通過其鍵來取出想要的信息
如果你不清楚該數組中究竟包含哪些鍵,有兩種辦法可以幫助你:
- 查閱PHP幫助手冊
- 使用代碼打印數組中所有的鍵值對
關於查閱幫助手冊,沒什么好說的。這里介紹第二種方式
既然$_SERVER是一個數組,那么你可以使用foreach循環打印出該數組所有的內容:
<html lang="en">
<head>
<title>document</title>
<style>
td{border:1px solid gray;}
</style>
</head>
<body>
<table>
<?php
foreach ($_SERVER as $key=>$value){
echo "<tr><td>$key</td><td>$value</td></tr>";
}
?>
</table>
</body>
</html>
運行后,就可以在頁面中看到數組中所有的鍵值對了