目次
関数内でグローバル宣言する
PHPの言語リファレンスによると、以下のように関数内でグローバル宣言することにより、グローバルスコープの変数が参照できるとあります。
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
このスクリプトを実行すると、3 を出力します。
でも、$aや$bの変数名を、$yokinや$okozukai とすると参照できないことがあります。
グローバル領域でグローバル宣言する
結論から先に言うと、以下のように、$yokinや$okozukaiはグローバル変数だと宣言すれば参照可能となります。
<?php
global $yokin = 1;
global $okozukai = 2;
function Sum()
{
global $yokin, $okozukai;
$okozukai = $yokin + $okozukai;
}
Sum();
echo $okozukai;
?>
グローバル変数はグローバル宣言すれば良い。という結論で、当たり前と言えば当たり前なんだけど、だったら何故 $aや$bがグローバル参照できるのか・・
まぁ言語仕様として、$aや$bはデフォルトでグローバル宣言されているのでしょうね。そういう理解にしときます。悩んでもしゃあないしね。