PHP では基本的に関数内の変数はローカル変数として扱われるため、関数内からグローバル変数にアクセスするためには特殊な宣言をする必要があります。
オートグローバル変数として自動的に定義される $GLOBALS
配列変数は、どのスコープからでもアクセスできるようになっています。
全てのグローバル変数は、この $GLOBALS
配列を介して参照できるようになっています。
$g_val = 100;
function change_global() {
$GLOBALS['g_val'] = 200;
}
change_global();
print $g_val; # => 200
関数内で、global
を使った参照宣言を行うことでも、グローバル変数にアクセスすることができるようになります。
$g_val = 100;
function change_global() {
global $g_val;
$g_val = 200;
}
change_global();
print $g_val; # => 200
global
キーワードを使用するより、オートグローバル変数 $GLOBALS
を使った方が、コードとしてはグローバル変数にアクセスしていることが明確になります。