1.全局变量和局部变量
函数内的变量和函数外变量
$outer = 'str'; //全局变量
function mgfunc() {
echo $outer; //局部
}
关键字global和超前局变量$GLOBALS
$outer = 'str';
function mgfunc() {
global $outer; //或者 $GLOBAL['outer']
echo $outer;
}
2.静态变量static
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不会消失
static关键字
2.1 仅初始化一次
2.2 初始化时需要赋值
2.3 每次执行函数该值会保留
2.4 static修饰的变量是局部的,仅在函数内部有效
2.5 可以记录函数的调用次数,从而可以在某些条件下终止递归
function myFunc()
{
static $a = 1;
echo $a ++;
}
myFunc(); -----> 1
myFunc(); -----> 2
myFunc(); -----> 3
3.函数参数
默认情况下,函数参数通过值传递
如果希望允许函数修改它的值,必须通过引用传递参数
$a = 1;
function myFun($a) {
$a = 2 ;
}
myFun($a);
echo $a; //这个时候输出的$a = 1 因为内部变量和外部变量没有关系
如果要内部变量和外部变量有关系
$a = 1;
function myFun( &$a ) {
$a = 2;
}
myFunc($a); //如果上面引用传值的话,则只能传变量$a 不能传值
echo $a; //这个时候输出的是 2
4.函数的引用返回
从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用运算符 &
function &mgFunc() {
static $b = 10;
return $b ;
}
$a = myFunc(); //$a = 10
$a = &myFunc(); //此时$a 和 $b 互为引用 $a和$b 共用一个内存空间
$a = 100; //此时 $a 内存空间的值被改了 那么$b也被改了
echo myFunc(); // 输出值为100