PHP 变量作用域
- 在 PHP 中,可以在脚本的任意位置对变量进行声明。
- 变量的作用域指的是变量能够被引用/使用的那部分脚本。
PHP 有三种不同的变量作用域:
- local(局部)
- global(全局)
- static(静态)
Local 和 Global 作用域
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
- 函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
- 下面的例子测试了带有局部和全局作用域的变量:
<?php
$x=5; //全局作用域
function myTest(){
$y=10; //局部作用域
echo "<p>测量函数内部的变量</p>";
echo "变量 x 是:$x";
echo "<br>";
echo "变量 y 是:$y";
}
myTest();
echo "<p>测量函数内部的变量</p>";
echo "变量 x 是:$x";
echo "<br>";
echo "变量 y 是:$y";
?>
注释:可以在不同的函数中创建名称相同的局部变量,因为局部变量只能被在其中创建它的函数识别。
PHP global 关键词
- global 关键词用于访问函数内的全局变量。
- 要做到这一点,请在(函数内部)变量前面使用 global 关键词:
<?php
$x=5;
$y=10;
function myTest(){
global $x,$y;
$y=$x+$y;
}
myTest();// 运行函数
echo $y; //输出变量 $y 的新值:15
?>
- PHP 同时在名为 $GLOBALS[index] 的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。
- 上面的例子可以这样重写:
<?php
$x=5;
$y=10;
function myTest(){
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y;
?>
PHP static 关键词
- 通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。
- 要完成这一点,请在首次声明变量时使用 static 关键词:
<?php
function myTest(){
static $x=0;
echo $x;
$x++;
}
myTest();
echo "<br>";
myTest();
echo "<br>";
myTest();
?>
- 然后,每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息。
- 注释:该变量仍然是函数的局部变量