我想知道当我这样做时到底发生了什么:
$my_variable = 'foo';
function whatever(){
$my_variable = 'bar';
global $my_variable;
}
我知道,在函数$my_variable
的范围内现在是'foo'。
内部发生了什么?当我在函数内部$my_variable = 'bar';
时,我创建了一个局部变量。当我在下一行global $my_variable;
时究竟发生了什么?本地的一个会自动删除吗?
答案 0 :(得分:2)
在处理global
之前,该函数将使用变量的本地bar
副本。一旦它被声明为全局,本地版本就被隐藏(或者可能被破坏,不确定......)并且只有全局版本可用。 e.g:
$z = 'foo';
function whatever() {
echo $z; // warning: undefined variable
$z = 'bar';
echo $z; // bar
global $z;
echo $z; // foo
}
whatever();
答案 1 :(得分:2)
是,本地文件会自动删除,或者措辞更好,会被全局变量替换。
答案 2 :(得分:0)
这样想:
$GLOBALS['my_variable'] = 'foo';
function whatever(){
$my_variable = 'bar';
$my_variable = $GLOBALS['my_variable'];
}