【PHP】 関数の中からグローバル変数が参照できない!解決方法は単純!

目次

関数内でグローバル宣言する

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はデフォルトでグローバル宣言されているのでしょうね。そういう理解にしときます。悩んでもしゃあないしね。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
目次
閉じる