PHP and function scope

2019-02-19 03:03发布

I was wondering what exactly happens when I do this:

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

I know that, within the scope of the function $my_variable is now 'foo'.

What's going on internally? When I do $my_variable = 'bar'; inside my function, I've created a local variable. When I do global $my_variable; on the next line what exactly happens? The local one is automatically deleted?

3条回答
倾城 Initia
2楼-- · 2019-02-19 03:08

Yes, the local one is automatically deleted or probably better worded, it is replaced with the global variable.

查看更多
甜甜的少女心
3楼-- · 2019-02-19 03:16

Up until the global is processed, the function will be using the local bar copy of the varaible. Once it's declared global, the local version is hidden (or maybe destroyed, not sure...) and only the global version is available. e.g:

$z = 'foo';
function whatever() {
    echo $z; // warning: undefined variable
    $z = 'bar';
    echo $z; // bar
    global $z;
    echo $z; // foo
}
whatever();
查看更多
对你真心纯属浪费
4楼-- · 2019-02-19 03:23

Think of it like this:

$GLOBALS['my_variable'] = 'foo';
function whatever(){
    $my_variable = 'bar';
    $my_variable = $GLOBALS['my_variable'];
}
查看更多
登录 后发表回答