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 回答