PHP变量范围理解

时间:2016-06-04 09:56:00

标签: php variables scope

刚开始学习PHP,在尝试变量范围时,我创建了这段代码:

<?php
    $x = 5;

    function scopeTest($x) {
        global $x;
        echo $x;            
    }

    scopeTest(4);
?>

在给定函数中,我传递值4,在函数中,该值存储在变量$x中(函数的本地)。此代码的输出为5而非4

我不知道值为4的变量在哪里? 我知道我可以通过更改函数中的局部变量名来执行此操作,但我想知道此程序的流程,它是如何输出5的。

局部变量$x是否被全局变量$x覆盖?

有没有办法在函数中访问局部变量$x4

2 个答案:

答案 0 :(得分:1)

使用语句global覆盖局部变量,由于它们共享相同的变量名,因此您失去了对它的引用。

但通过这样做,您可以同时使用:

$x = 5;

function scopeTest($x) {
  echo $GLOBALS['x'], $x; // 54      
}

scopeTest(4);

或..只需重命名本地变量

function scopeTest($y) {
  global $x;
  echo $x, $y;           
}

答案 1 :(得分:1)

是您可以通过在全球$ x之前回显$ x来使用$ x的值4;

global $x; //replace the value of $x to it's global value.