2018/9/10 phpのスコープについてまとめる。

https://qiita.com/TakashiOshikawa/items/0f2420a1c94ba78c9035

①関数スコープはある。関数ブロック内で宣言した変数を関数ブロック外から参照はできない。これはjavascriptと同じ。

②グローバルスコープ。関数外で宣言された変数。

    $val = 'グローバルスコープ';

    function func2()
    {
        return $val;
    }

    echo $val;  //グローバルスコープ
    echo func2(); //Undefined Variable: val(エラー)

phpの場合グローバル変数を関数内から参照できない(グローバル宣言すればで参照できる)。ここはjavascriptと異なる。

javascriptの場合、関数内にグローバル変数と同じ名前のローカル変数が無ければグローバル変数を参照する。同名のローカル変数があれば、ローカル変数を参照するので、グローバル変数は参照できない。

上記例は、javascriptの場合、関数内で$valは宣言されていないのでグローバル変数を参照するのだが、phpの場合は上記のままでは参照できない。(グローバル宣言をすれば参照できる。ただqiitaの↑ページによるとグローバル宣言はあまりしない方がよいらしい。)


<?php

$val=500;

function func2($n)
{
$val=40;
print $val;
print “<br>”;
print “グローバル変数のバルは、$n”;
print “<br>”;
}

print $val;
print “<br>”;
func2($val);

?>

関数内からグローバル変数を参照したいなら、上記のように引数として渡す、と。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です