PHP 速習チュートリアル

PHP $GLOBALS

1. PHP $GLOBALS の概要

$GLOBALS スーパーグローバルは、スクリプト内のすべてのグローバル変数へのリファレンスを格納した配列(アレイ)です。

PHPのスーパーグローバルは、すべてのスコープにおいて常にアクセス可能な組み込み変数です。

2. グローバル変数 (Global Variables)

グローバル変数とは、あらゆるスコープからアクセスできる変数のことです。

最も外側のスコープ(アウタースコープ)で定義された変数は、自動的にグローバル変数となり、どのスコープからでも利用可能になります。

ただし、関数内部でグローバル変数を使用するには、global キーワードを使用して定義するか、$GLOBALS シンタックスを使用して参照する必要があります。

2.1 例:関数内でグローバル変数 $x を参照する

$x = 75;

function myfunction() {
  // $GLOBALS シンタックスを使用してグローバル変数を参照
  echo $GLOBALS['x'];
}

myfunction();

3. 他のプログラミング言語との違い

これは、グローバル変数を明示的に指定しなくても参照できる他のプログラミング言語とは異なる点です。

PHPでは、$GLOBALS シンタックスを使わずにグローバル変数を参照しようとすると、何も表示されない(あるいはエラーが発生する)ことになります。

3.1 例:シンタックスなしでグローバル変数を参照した場合(エラーまたは非表示)

$x = 75;

function myfunction() {
  // $GLOBALS を指定しないため、$x は未定義として扱われる
  echo $x;
}

myfunction();

4. global キーワードによるアクセス

関数内でグローバル変数を参照するもう一つの方法として、global キーワードを使用して変数をグローバルとして定義する方法があります。

4.1 例:関数内で $x を global として定義する

$x = 75;

function myfunction() {
  // global キーワードで $x をグローバル変数としてインポート
  global $x;
  echo $x;
}

myfunction();

5. グローバル変数の作成

最も外側のスコープで作成された変数は、$GLOBALS シンタックスを使っているかどうかにかかわらず、すべてグローバル変数となります。

5.1 例:グローバルスコープでの変数定義

$x = 100;
echo $GLOBALS['x']; // 100 と表示
echo $x;             // 100 と表示

通常、関数内で作成された変数はその関数内にのみ属しますが、$GLOBALS シンタックスを使用することで、関数内部からグローバル変数を作成することも可能です。

5.2 例:関数内でグローバル変数 (z) を作成し、関数外で使用する

$x = 10;
$y = 20;

function result() {
  // $GLOBALS を使って新しいグローバル変数 'z' を作成
  $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}

result();
echo $z; // 関数内で生成された $z にアクセスし、30 と表示