全局变量
PHP全局变量无法直接用于自定义函数中,下面是一个错误的例子:
<?php
//声明两个全局变量
$a = 20;
$b = 30;
function demo() {
$c = $a + $b;
}
//调用函数会报错,全局变量$a,$b无法直接用于函数中
demo();
如果需要使用全局变量,需要使用global
或者$GLOBALS
,如下所示:
<?php
//声明两个全局变量
$a = 20;
$b = 30;
function demo() {
//在函数中使用全局变量
global $a,$b;
$c = $a + $b;
echo $c;
}
//正常执行,结果为50
demo();
或者使用$GLOBALS
也是可以的
<?php
//声明两个全局变量
$a = 20;
$b = 30;
function demo() {
//在函数中使用全局变量global
$c = $GLOBALS['a'] + $GLOBALS['b'];
echo $c;
}
//正常执行,结果为50
demo();
静态变量
函数中的局部变量,如果不专门声明为static
存储类别,默认都是动态分配内存,函数结束后自动释放。如果希望函数执行后,局部变量依然保存在内存中,应该使用静态变量static
来进行声明,比如下面的例子:
<?php
function demo() {
//使用static来声明一个静态变量
static $a = 20;
echo $a;
$a++;
}
//第一次调用,输出结果20
demo();
//第二次调用,内存并未释放,输出结果为21
demo();
//第三次调用,内存依然未释放,输出结果为22
demo();