PHP和功能范围(PHP and function scope)

2019-06-26 18:39发布

我不知道我这样做的时候到底发生了什么:

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

我知道,函数的范围内$my_variable现在是“富”。

这是怎么回事内? 当我做$my_variable = 'bar'; 我的函数中,我创建了一个局部变量。 当我做global $my_variable; 在下一行到底发生了什么? 当地一个被自动删除?

Answer 1:

直到global进行处理,该功能将使用本地bar的varaible的副本。 一旦它宣布全球,本地版本是隐藏的(或者破坏,不知道...),只有全球版本。 例如:

$z = 'foo';
function whatever() {
    echo $z; // warning: undefined variable
    $z = 'bar';
    echo $z; // bar
    global $z;
    echo $z; // foo
}
whatever();


Answer 2:

是的 ,当地的一个被自动删除或可能是更好的措辞,它被替换为全局变量。



Answer 3:

想想看这样的:

$GLOBALS['my_variable'] = 'foo';
function whatever(){
    $my_variable = 'bar';
    $my_variable = $GLOBALS['my_variable'];
}


文章来源: PHP and function scope