【PHP】スーパーグローバル変数とは?使い方をわかりやすく説明
- 作成日:2018/06/08
PHPのスーパーグローバル変数についてまとめました。初心者でもわかるようになるべく簡単に説明したいと思います。
スーパーグローバル変数とは
PHPのスーパーグローバル変数とは 関数内外問わずどこからでもアクセスできる変数です。 定義済みの変数なので、自分で宣言しなくても使えます。 ちなみに、連想配列となっています。
スーパーグローバル変数には色々な種類があります。用途に応じて使い分けたりします。
- $_GET
- $_POST
- $GLOBALS
- $_SERVER
- $_FILES
- $_COOKIE
- $_SESSION
- $_REQUEST
- $_ENV
- $php_errormsg
使い方
スーパーグローバル変数は以下のように記述します。
$_GET['hoge'] = 'hooooge';
hogeをキーと呼び、hoooogeがその値となります。 上記は変数$_GETの中でキー値がhogeのものに値を格納していますね。
逆に値を取り出すときは以下のようにします。
$tmp = $_GET['hoge'];
このように記述することで、$_GETのキー値hogeに格納されている値がtmpへ格納されます。
また、スーパーグローバル変数は連想配列なので、キーはhogeだけでなく以下のように複数のキーを設定することができます。
$_GET['hoge'] = 'hooooge';
$_GET['age'] = 'ageeee';
$_GET['sage'] = 'sageeee';
これは例なのでキー名と値は仮定したものですが、 スーパーグローバル変数は「キーを指定して値を取得したり設定する」ということを覚えておいてください。
実例1
実際にスーパーグローバル変数を使ってみます。 例えば、PHPのプログラムでIPアドレスやホスト名を取得するケースがあるとします。
IPアドレスやホスト名などのサーバー情報は$_SERVER変数を使うと簡単に取得できます。
//IPアドレス取得
$ip= $_SERVER['SERVER_ADDR'];
//ホスト名取得
$host= $_SERVER['SERVER_NAME'];
$_SERVERはサーバ情報が格納されたスーパーグローバル変数です。
$_SERVERは様々なキーを持っていますが、 IPアドレスとホスト名に該当するキーは「SERVER_ADDR」と「SERVER_NAME」なので、 これを指定してあげます。
実例2
次にアクセス情報を取得したいケースを考えます。
アクセスの種類はGETアクセスとPOSTアクセスの2種類がありますが、 GETは通常のアクセスで、POSTは問い合わせフォームなどで使う特殊なアクセスです。
ネットサーヒィンで色々なサイトにアクセスする場合、 大抵がこのGETアクセスとなります。
アクセス情報はURLの末尾に付加されているので、 これをスーパーグローバル変数を使って取得します。 例えば以下のようなURLがあるとします。
https://abc/efg.php?test=hoge
アクセス情報は「?」の後に付加されているので、「?」以降のデータを取得します。 取得にはスーパーグローバル変数$GETを使います。
$get =$_GET['test'];
このように、GETアクセスの情報は$GET変数で取得できます。 キー値はURL末尾?test=hogeの左辺を指定します。
そうすると、$getにはhogeが格納されます。
実例1ではキー値は「SERVER_ADDR」などの定義済みの固定値でしたが、 今回は定義済み変数ではありません。
スーパーグローバル変数は変数によってキー値が定義されているものと、そうでないものがあります。 実例1ではキー値がSERVER_ADDRなどと決まっていましたが、今回の例ではtestという付与されてきたものですね。
まとめ
始めてスーパーグローバル変数を扱うとき、キー値について混乱する方もいるかと思います。 これは、変数によりキー値の扱いが少し異なるためです。
先ほど紹介した実例1ではキー値は最初から定義済みとなっており、これを指定するだけでサーバ情報を取得できました。
しかし、実例2ではURLに付加してきたものがキー値となっていました。
このように、変数によりキー値の扱いが少し異なってきますが、どの変数を使おうが基本的な使い方は変わりません。 スーパーグローバル変数からデータを取得するには、データに応じたキー値を指定して取得するのです。
どのようなキー値があるのかは変数によって異なるため、 変数を使うときにそれぞれ確認すると良いでしょう。