$bar = "outside";
function foo($bar) {
$bar = "inside";
return $bar;
}
$bar = foo($bar);
echo $bar
私は$バーは「外側」エコーだろうと予測、それは「内部の」エコーと私はなぜ表示されません。 $ barの値は最初は "outside"(グローバルとして定義)です。関数fooは(定義された直後に)呼び出され、$ barと呼ばれることもあるパラメータをとります。 $ barに値 "outside"が与えられたので、 "outside"という値がfooに渡されます。それで、私たちは文章$ bar = "inside"を持っています。これは "outside" = "inside"を意味するように思えますし、別の文字列にどのように文字列を割り当てることができますか?それから関数は$ barを返します。これはfooに渡された値なので、 "outside"という値を持つはずです。それがどのように「内部」の価値を得たのか分かりません。
を編集してください:私の質問は可変範囲ではありません。私が疑問に思っているのは、パラメータ値が3行目の関数に渡されず、無意味なステートメントが "outside" = "inside"になってしまうことです。私が得た答えに基づいて、私はそのような文がPHP(およびおそらく他のすべての言語)では違法であると仮定することしかできないので、インタプリタは単にこれをしません(通訳者のの通常のの動作関数本体内のどこにでもパラメータを代入することです)。
は
:[変数のスコープ](HTTP:// PHP。 net/manual/en/language.variables.scope.php) - それを最初に理解する必要があります。これは、多くの多くのコンピュータ言語での非常に基本的な原則です。 – hakre
あなたはその機能で必要なものについてもっと明確にすべきです。 –
@hakre:私の質問は可変スコープと関係がありません。私はこの問題に対処するのに十分な範囲を理解しています。私の混乱が起こっているところでは、なぜそのようなパラメータ値が通常代入されるかという、3行目のローカル変数$ barの代わりにパラメータ値 "outside"が使われないのです。言い換えれば、私は、パラメータ値が関数に渡されない場合に遭遇したように見えます。 – Bill