まくまくPHPノート
関数内でグローバル変数を参照する
2012-01-30

PHP では基本的に関数内の変数はローカル変数として扱われるため、関数内からグローバル変数にアクセスするためには特殊な宣言をする必要があります。

$GLOBALS 配列の要素としてアクセスする方法

オートグローバル変数として自動的に定義される $GLOBALS 配列変数は、どのスコープからでもアクセスできるようになっています。 全てのグローバル変数は、この $GLOBALS 配列を介して参照できるようになっています。

$g_val = 100;

function change_global() {
    $GLOBALS['g_val'] = 200;
}
change_global();
print $g_val;  # => 200

global キーワードでグローバル変数を指定する方法

関数内で、global を使った参照宣言を行うことでも、グローバル変数にアクセスすることができるようになります。

$g_val = 100;

function change_global() {
    global $g_val;
    $g_val = 200;
}
change_global();
print $g_val;  # => 200

global キーワードを使用するより、オートグローバル変数 $GLOBALS を使った方が、コードとしてはグローバル変数にアクセスしていることが明確になります。

2012-01-30