我们可以在PHP代码中可以在脚本的任意位置对变量进行声明,变量的作用域指的是变量能够被引用/使用的代码区域。
PHP 有三种不同的变量作用域:local(局部)
global(全局)
static(静态)
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
这点和其他编程语言不一样。比如java 定义在函数外的变量 在函数内也可以访问。但是php中,如果函数外的变量需要在函数内访问,则需要使用global关键字来
比如
$y=10;
function myTest() {
global $x,$y; //函数内部入如果想要使用全局变量
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?>
另外 通过$GLOBALS[index] 这个数组 可以访问所有的全局变量,当前前提是 在当前的PHP页面中可以访问的代码 如果是另外一个php页面的全局变量 则可能无法访问 这点我们可以试一下。
比如下面这样子
$y=10;
function myTest() {
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y; // 输出 15
?>
静态局部变量
我们知道局部变量,每次函数执行完后,这些局部变量都会被销毁,但是如果我们希望一些局部变量让它不销毁,并且下次再调用这个方法的时候,还是保留着上一次执行的值。
比如下面这样子
function run() {
static $x=0;
echo $x;
$x++;
}
run();
run();
run();
?>
这个$x 虽然是局部变量,但是因为定义成static了,所以每次执行完后 变量还在那里 并且下一次再执行 值也会保留。
每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息。
注释:该变量仍然是函数的局部变量。