您的位置:首页 > 编程语言 > PHP开发

php--关于函数(2)变量范围

2015-12-13 00:58 543 查看
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

*****因为静态变量只能在声明在函数中,我们如果要使用静态变量的值也只能是通过调用函数得到,若调用函数时再赋值给一个变量,有可能得不到我们想要结果,如上例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: