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(); -----> 33.函数参数 默认情况下,函数参数通过值传递 如果希望允许函数修改它的值,必须通过引用传递参数
$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; //这个时候输出的是 24.函数的引用返回 从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用运算符 &
function &mgFunc() { static $b = 10; return $b ; } $a = myFunc(); //$a = 10 $a = &myFunc(); //此时$a 和 $b 互为引用 $a和$b 共用一个内存空间 $a = 100; //此时 $a 内存空间的值被改了 那么$b也被改了 echo myFunc(); // 输出值为100