2008/10/11

[php]関数内の変数宣言が、暗黙的にローカル変数

昨日、質問したのですが、関数内で変数を行ったとき、暗黙的にローカル変数となるみたいです。

例えば、下のようなファンクションがあったとします。


function hoge($args1){
$foo = "Hello".$args1."さん。";
return $foo;
}

この時、返り値として、「Hello引数さん。」と返すのですが、このファンクション内で使われている$fooは、自動的にローカル変数となり、呼び出し元で、この変数を参照しようとすると、$foo=""と返すみたいです。

逆に、関数内で、globalを使うことにより、グローバル変数を呼び出すことが可能みたいです。
例えば、下のようなファンクションがあったとします。


$foo = "test";
function hoge($args1){
global $foo;
$foo = "Hello".$args1."さん。";
return $foo;
}

上の場合、呼び出し元で、$fooを参照すると、「Hello引数さん。」と表示されるみたいです。

phpは、変数スコープをあまり考えないみたいなので、関数内部を作るとき、引数設定には、特に注意したいところかなと。

0 コメント:

コメントを投稿