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 ?>