1.全局变量
<?php
$a = 1;
$b = 2;
function test(){
echo $a + $b."<br>"; //运行结果为0
}
test();
echo $a + $b; //运行结果为3
?>
可见,在函数中无法直接调用全局变量
test()函数中的变量$a和$b都没有被赋值,进行空值运算,得到结果为0
在函数中使用全局变量可以使用global和$GLOBALS数组
使用global
<?php
$a = 1;
$b = 2;
function test(){
global $a,$b;
echo $a + $b."<br>"; //运行结果为3
}
test();
echo $a + $b; //运行结果为3
?>
使用$GLOBALS数组
<?php
$a = 1;
$b = 2;
function test(){
echo $GLOBALS['a'] + $GLOBALS['b']."<br>"; //运行结果为3
}
test();
echo $a + $b; //运行结果为3
?>
2.局部变量
<?php
function test($a){
$b = 1;
echo $a + $b."<br>"; //运行结果为3
}
test(2);
echo $a + $b; //运行结果为0
?>
函数外不能访问函数内定义的变量,所以函数外进行空值运算,结果为0
如果函数外部需要调用函数内的变量,需要通过return将其值传回到主程序区块
<?php
function test($a){
$b = 2;
return $a + $b;
}
$c = test(1);
echo $c; //运行结果为3
?>
3.静态变量
函数中的局部变量都是动态地分配储存空间的,在函数结束调用后自动释放。如果定义静态变量,则函数结束运行后,变量还会保存在内存里,当函数再次执行时,静态变量将接着上次的结果继续运算。
通过static将局部变量设置为静态变量
<?php
function test(){
static $a = 0;
echo $a;
$a ++;
}
test(); //运行结果为0
test(); //运行结果为1
test(); //运行结果为2
test(); //运行结果为3
?>