PHP变量的作用域

变量的作用域


  变量在使用时,要符合变量的定义规则。变量必须在有效范围内使用,如果超出有效范围,变量也就失去意义了。

  局部变量:即在函数内部定义的变量,其作用域是所在函数。

  全局变量:即被定义在所有函数以外的变量,其作用域是整个PHP文件,但是在用户自定义函数内部是不可用的。想在用户自定义函数内部使用全局变量,要使用global关键字声明。

<?phpheader("Content-Type:text/html;charset=utf-8");$zy="你好";$zyy="PHP语言";function lxt(){    echo $zy."<br>";  //$zy 不能被调用,没有输出    global $zyy;       //利用关键字global 在函数内部说明,不说明认为是私有变量    echo $zyy."<br>";  //调用$zyy}lxt();?>

  在本例中定义两个全局变量$zy$zyy,在用户自定义函数lxt()里面,想要在第5行、第7行高用它们,而程序输出的结果只有$zyy的值“PHP语言”,因为在第6行用global关键字声明了全局变量$zyy。而第5行不会有任何输出,其中的$zy和第二行的$zy没有任何关系。  

  静态变量:能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。而一般变量是在函数调用结束后,其存储的数据值将被清除,所占的内存空间被释放。使用静态变量时,先要用static来声明变量。需要把关键字static 放在要定义的变量之前。

<?phpfunction zdy(){    static $count=0;    $count++;    echo $count." ";}function zdy1(){    $count=0;    $count++;    echo $count." ";}for($i=0;$i<10;$i++) zdy();  //输出1~10echo "<br>";for($i=0;$i<10;$i++) zdy1(); //输出10个1?>

  自定义函数zdy()是输出从1到10,10个数字,而zdy1()函数则输出的是10个1。因为自定义函数zdy()含有静态变量,而函数zdy1()是一个普通变量。初始化都为0,再分别使用for循环调用两个函数,结果是静态变量的函数zdy()在被调用后,保留了$count中的值,静态变量的初始化只是在第一次遇到时被执行,以后就不再对其进行初始化操作了,将略过第3行代码不执行;而普通变量的函数zdy1()在被调用后,其变量$count失去了原来的值,重新被初始化为0。


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

PHP变量的作用域