$GLOBALS
(PHP 4, PHP 5, PHP 7, PHP 8)
$GLOBALS — グローバルスコープで使用可能なすべての変数への参照
説明
スクリプトのグローバルスコープに現在定義されているすべての変数への参照を含む連想配列です。
変数名が配列のキーとなります。
例
例1 $GLOBALS の例
<?php
function test()
{
$foo = "local variable";
echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
echo '$foo in current scope: ' . $foo . "\n";
}
$foo = "Example content";
test();
?>
$foo in global scope: Example content
$foo in current scope: local variable
警告
PHP 8.1.0 以降、$GLOBALS 配列全体を書き換える操作はサポートされなくなりました:
例2 $GLOBALS 配列全体を書き換える操作はエラーになる
<?php
// 以下は、コンパイル時にエラーが発生します:
$GLOBALS = [];
$GLOBALS += [];
$GLOBALS =& $x;
$x =& $GLOBALS;
unset($GLOBALS);
array_pop($GLOBALS);
// ...上記以外の、$GLOBALS 全体に対するあらゆる書き込み/読み書き操作も同様です
?>
注意
注意: これは 'スーパーグローバル'
あるいは自動グローバル変数と呼ばれるものです。
スクリプト全体を通してすべてのスコープで使用することができます。
関数やメソッドの内部で使用する場合にも
global $variable; とする必要はありません。
注意:
変数の可用性
他のスーパーグローバル
とは異なり、$GLOBALS は PHP で常に使用可能です。
注意:
PHP 8.1.0 以降、$GLOBALS はグローバルな シンボルテーブル の、読み取り専用のコピーになりました。つまり、グローバル変数は $GLOBALS のコピーを通じて書き換えられなくなったということです。
それより前のバージョンでは、
$GLOBALS 配列は値渡しの振る舞いの例外とされ、そのコピーを通じてグローバル変数の書き換えができていました。