静态变量static
<?phpfunction myTest(){static $x=0;echo $x;$x++;echo PHP_EOL; //换行符} myTest();//0 myTest();//1 myTest();//2 ?> 123456789101112
每次调用函数时,该变量将会保留着函数前一次被调用时的值,该函数还是局部变量。
参数的作用域
参数是通过代码将值传递给函数的局部变量。
参数是在参数列表中声明的,作为函数声明的一部分。
<?phpfunction myTest($x){echo $x;}myTest(5);//5 ?> 123456
$x是形参,也就是模型,假的。
5是实参,是真实存在的。
笔记(心得):
定义在函数外部的就是全局变量,它的作用域从定义处一直到文件结尾。函数内定义的变量就是局部变量,它的作用域为函数定义范围内。函数之间存在作用域互不影响。函数内访问全局变量需要global关键字或者使用$GLOBALS[index]数组。在PHP中函数是有独立的作用域,所以局部变量会覆盖全局变量,即使局部变量中没有全局变量相同的变量,也会覆盖,如下:<?php$a=3;$b=5;function myTest(){echo $a-$b;//0}myTest(); ?> 123456789
上面案例可以看出,局部变量没有获取到全局变量。
想要获取到全局变量,必须要使用以下两个代码:
<?php$a=5;$b=3;function a1(){gloabal $a,$b;echo $a-$b;//2}a1();function a2(){echo $GLOBALS['a']-$GLOBALS['b'];//2}a2(); ?>
12345678910111213141516