PHPでウェブの世界と繋がろう!
menu
ホーム > PHPの文法 > 5 変数 > PHP $GLOBALS(グローバル変数)のすべて!【初心者向け基本】

PHP $GLOBALS(グローバル変数)のすべて!【初心者向け基本】

Pocket

PHP5 PHP7

$GLOBALS(グローバル変数) 簡単まとめ

- 1 分ノート ! -

  • $GLOBALS
    PHPの定義済み変数(=スーパーグローバル変数)の1つ
  • $GLOBALS
    グローバルスコープで使用可能な変数への
    参照を含む変数
  • $GLOBALS連想配列として使用する
  • $GLOBALS参照先変数の変数名が配列のキーとなる
  • $GLOBALS
    スーパーグローバル変数であり、コード中どこからでも使用可能
  • $GLOBALS は、関数やメソッドの内部で使用する場合、
    global $GLOBALS; とする必要がない
  • $GLOBALSの値を操作すると
    参照元のグローバル変数も値が変わる
  • $GLOBALSは、PHPで常に使用可能



$GLOBALS(グローバル変数)とは

POINT

  • $GLOBALS
    PHPの定義済み変数(=スーパーグローバル変数)の1つ
  • $GLOBALS
    グローバルスコープで使用可能な変数への
    参照を含む変数
  • $GLOBALS連想配列として使用する
  • $GLOBALS参照先変数の変数名が配列のキーとなる
  • $GLOBALS
    スーパーグローバル変数であり、コード中どこからでも使用可能
  • $GLOBALS は、関数やメソッドの内部で使用する場合、
    global $GLOBALS; とする必要がない
  • $GLOBALSの値を操作すると
    参照元のグローバル変数も値が変わる
  • $GLOBALSは、PHPで常に使用可能

$GLOBALSは、他のスーパーグローバル変数とは異なり、PHPで常に使用可能です。

※注意1:
$GLOBALSを日本語読みにするとグローバル変数と言います。また、関数外部で定義した変数、例えば $name = ‘山田’; の $name もグローバル変数と言います。
ですが、2つは違うものです。

  • $GLOBALS は、すべてのスコープ(影響範囲)を持つスーパーグローバル変数です。
  • $name は、グローバルスコープ(影響範囲)を持つグローバル変数です。

$GLOBALSもグローバル変数と言いますが読み方だけです。実際はスーパーグローバル変数です。混同しないように注意して下さい。
変数のスコープについてはこちらを参照下さい。


$GLOBALSはPHPの定義済み変数

$GLOBALSは、PHPの定義済み変数の内の1つの変数です。PHPには定義済み変数が複数あります。其の中の1つが$GLOBALSです。
PHPの定義済み変数はスーパーグローバル変数とも言います。
$GLOBALS = PHPの定義済み変数 = スーパーグローバル変数
また、$GLOBALSは自動グローバル変数とも呼ばれます。
(PHPには定義済みの定数というものもあります。詳細はこちらを参照下さい。)

PHPの定義済み変数(=スーパーグローバル変数)

$GLOBALS
(グローバル変数)
・グローバルスコープで使用可能なすべての変数への参照
・連想配列として使用
$_SERVER
(サーバー変数)
・サーバ情報および実行時の環境情報
・連想配列として使用
$_GET
(ゲット変数)
・HTTP GET 変数
・連想配列として使用
$_POST
(ポスト変数)
・HTTP POST 変数
・連想配列として使用
$_FILES
(ファイル変数)
・HTTP ファイルアップロード変数
・連想配列として使用
$_REQUEST
(リクエスト変数)
・HTTP リクエスト変数
・連想配列として使用
$_SESSION
(セッション変数)
・セッション変数
・連想配列として使用
$_ENV
(環境変数)
・環境変数
・連想配列として使用
$_COOKIE
(クッキー変数)
・HTTP クッキー
・連想配列として使用

これら、PHPの定義済み変数は、プログラムコード中何処からでも使用することができます。関数の内部でも globalキーワードを使用せず呼び出すことが出来ます。このように、スーパーグローバル変数は非常に便利なものです。
通常、変数には有効範囲などのルールがあります。このルールは、PHPにおいて変数のスコープという宣言の場所とそれによる有効範囲として定められています。スコープには、「グローバルスコープ」「ローカルスコープ」「スタティック変数」「関数の引数」の4種類ありますが、これらすべてのスコープを持っているのがスーパーグローバル変数です。
変数のスコープについてはこちらを参照下さい。

※注意2:
ただし、スーパーグローバル変数は、関数やクラスメソッドの中の 可変変数 として使用することはできません。

可変変数についてはこちらを参照下さい。


$GLOBALSはすべてのグローバル変数の参照を含む変数

GLOBALS変数は、グローバルスコープで使用可能なすべての変数への参照を含む変数です。グローバルスコープの変数とは、関数外部で定義されたグローバル変数のことです。

簡単な例で、GLOBALS変数を呼び出してみましょう。

結果は

変数です。
変数です。

となります。

GLOBALS変数は $var というグローバルスコープを持つグローバル変数の参照を含んでいるので、$GLOBALS['var'] で $var の内容を呼び出すことが出来ます。GLOBALS変数は連想配列として使用しますが、$varの識別子(名前)の 'var' が連想配列のキー名になります

説明が重複しますが、グローバルスコープで使用可能な変数の説明をします。スコープとは変数の宣言の場所とその影響範囲のことです。スコープには、「グローバルスコープ」「ローカルスコープ」「スタティック変数」「関数の引数」の4種類あります。変数のスコープについてはこちらを参照下さい。
グローバルスコープを持つ変数の宣言場所は、関数の外部です。影響範囲はコード中全般です。ですが、別のファイルからは呼び出せません。(ページを跨いで呼び出すことは出来ません。)定義したファイル上何処からでもという意味です。また、グローバル変数は関数の内部からはアクセスできません(globalキーワードを使用することで関数の内部からもアクセスできます。)。

例えば、
var.php というファイルの関数の外部で変数を定義します。

$var は、var.php 上であれば何処からでも呼び出せるグローバルスコープのグローバル変数になります。
ちなみに PHP は上から順番に処理していくので、変数は呼び出す前に定義する必要があります。

このようなグローバル変数の参照を含むのが GLOBALS変数 です。

従って以下のように $var は GLOBALS変数でも参照できます。

結果は

変数です。
変数です。

となります。


$GLOBALSは連想配列で使用する

$GLOBALSは、連想配列で使用します。グローバル変数の変数名が$GLOBALSの配列の「キー名」になります。$GLOBALS[‘変数名’]となります。

結果は

変数です。
変数です。

となります。


$GLOBALSはコード中何処からでも使用可能

$GLOBALSは、スーパーグローバル変数です。スーパーグローバル変数はすべてのスコープを持つ変数です。スクリプトのコード中どこからでも使用することが出来る変数です。関数の内部で呼び出す場合でもglobalキーワードは必要ありません。

結果は

Hello World !!

となります。


$GLOBALSを関数やメソッドの内部で使用する場合

$GLOBALSは、関数やメソッドの内部で使用する場合、 global $GLOBALS; とする必要がありません
通常、関数外部で宣言された変数は global キーワードで引き渡さなければ、関数内部で利用できません。
例えば、

結果は

こんにちは、さん

となります。

global キーワードで関数内部へ変数を引き渡すと

結果は

こんにちは、山田さん

となります。

ですが、$GLOBALSを使用すると global $GLOBALS; と宣言しなくても関数内部で使用できます

結果は

こんにちは、山田さん

となります。


$GLOBALSを関数内部で使用すると値を保持する

$GLOBALSを関数内部で使用すると値を保持します。$GLOBALSにはスタティック変数としてのスコープがあるためです。

結果は

4
4

となります。

参照元のグローバル変数 $int にも値が加わります。


$GLOBALSから参照元のグローバル変数を変更

$GLOBALSの値を変更すると参照元のグローバル変数の値も変わります。

結果は

2

となります。


様々型のグローバル変数に $GLOBALS からアクセス

様々型のグローバル変数に $GLOBALS からアクセスできます。

結果は

グローバル変数にアクセス
文字列
1
2.2
taro
1
スーパーグローバル変数$GLOBALSにアクセス
文字列
1
2.2
taro
1

となります。


サンプルコード

– サンプル Click Here ! –

実行結果

$GLOBALS
グローバルスコープのグローバル変数
グローバルスコープのグローバル変数

様々な型のグローバル変数と$GLOBALS
グローバル変数にアクセス
文字列
1
2.2
taro
1

スーパーグローバル変数$GLOBALSにアクセス
文字列
1
2.2
taro
1

関数の内部で$GLOBALSを使用
Hello World !!

$GLOBALSから参照元のグローバル変数を変更
2

$GLOBALSを関数内部で使用すると値を保持する
4

– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

投稿日:2017年3月1日
最終更新日:2017年03月22日

関連記事

配列関数サンプル

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpref-globals/trackback/