3

これを行うと正確に何が起こるのだろうと思っていました:

$my_variable = 'foo';
function whatever(){
    $my_variable = 'bar';
    global $my_variable;
}

関数のスコープ内に$my_variable「foo」があることを私は知っています。

内部で何が起こっているのですか?関数内で行うと $my_variable = 'bar';、ローカル変数が作成されました。次の行を実行global $my_variable;すると、正確には何が起こりますか? ローカルのものは自動的に削除されますか?

4

3 に答える 3

2

はい、ローカル変数は自動的に削除されるか、おそらくより適切な表現で、グローバル変数に置き換えられます。

于 2012-08-06T01:35:49.573 に答える
2

が処理されるまでglobal、関数は変数のローカルbarコピーを使用します。グローバルと宣言されると、ローカルバージョンは非表示になり(または破棄される可能性がありますが、よくわかりません...)、グローバルバージョンのみが使用可能になります。例えば:

$z = 'foo';
function whatever() {
    echo $z; // warning: undefined variable
    $z = 'bar';
    echo $z; // bar
    global $z;
    echo $z; // foo
}
whatever();
于 2012-08-06T01:28:48.313 に答える
0

次のように考えてください。

$GLOBALS['my_variable'] = 'foo';
function whatever(){
    $my_variable = 'bar';
    $my_variable = $GLOBALS['my_variable'];
}
于 2012-08-06T05:06:17.410 に答える