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