PHP的变量的范围
局部变量( local variable): 在函数中声明的变量就是局部变量,只能在自己的函数内部使用。参数就是局部变量,这个局部变量可以调用时去赋值。
全局变量(global variable): 在函数外声明,在变量声明以后的,直到整个脚本结束前都可以使用,包括在函数中和{}中都可使用,在PHP中使用全局变量 要通过global关键字 将这个全局变量包括到函数中才能使用到,在global声明之后才是使用全局的变量
静态变量(static variable):静态变量只能声明在函数中(类中),不能在全局声明,使用static在变量前
作用:一个变量可以在同一个函数在多次调用中同用。
1. 静态变量在静态代码段中保存
2. 一个函数多次调用之间共用,但只在第一次调用 函数时声明到内存,以后再调用用,就不再声明,而直接使用
局部与全局变量:示例如下
<?php
$a=10; //定义一个全局变量
function demo1(){
$a=5; //定义一个局部变量
echo "demo1()=".$a."<br>";
}
function demo2(){
global $a; //引用一个全局变量
$a+=10;
echo "demo2()=".$a."<br>";
}
demo1();
demo2();
echo "\$a=".$a; //注意此处要用\进行转义,要不输出的是解析后的$a的值
?>
输出结果:
demo1()=5
demo2()=20
$a=20
*****由此可以看出:1、局总变量只在函数内部使用,2、被函数引用的全局变量如果在函数中值被改变,那么全局变量的值对应的也会改变
静态变量:示例如下
function sta(){ //声明一个具有静态变量的函数
static $a=0;
$a++;
return $a." "; //此处用return把$a的值返回,注意调用时语句
}
function ordi(){ //声明一个普通函数
$a=0;
$a++;
echo $a." ";
}
for($i=0;$i<10;$i++){//调用函数,结果:1 2 3 4 5 6 7 8 9 10
echo sta();
}
echo "<br>";
for($i=0;$i<10;$i++){//调用函数,结果:1 1 1 1 1 1 1 1 1 1
ordi();
}
echo "<br>";
echo sta(); //再次调用带静态变量函数,结果11,
echo "<pre>****************************</pre>";
$str=sta(); //函数str()返回的是一个值,所以可以将函数赋值给一个变量,因此处又执行了一次函数调用,执行后结果是12,而不是11,此处的值12值得玩味
echo $str;
输出结果如下:
1 2 3 4 5 6 7 8 9 10
1 1 1 1 1 1 1 1 1 1
11
****************************
12
*****因为静态变量只能在声明在函数中,我们如果要使用静态变量的值也只能是通过调用函数得到,若调用函数时再赋值给一个变量,有可能得不到我们想要结果,如上例