Discuz教程网

从8到9,PHP变量之变量的作用域(作者:zero)

[复制链接]
authicon 某人 发表于 2010-12-30 16:53:25 | 显示全部楼层 |阅读模式
     上一篇博文Zero主要学习认识了PHP变量的概念——在php执行过程中数值可以变化的量以及变量的声明和使用,如果对于这两点知识还不够了解Zero建议您阅读上一篇博文:《从7到8,PHP变量之认识PHP变量》。今天Zero将要学习的是关于PHP变量作用域方面的知识。
1、什么是变量的作用域
     变量在使用时,要符合变量的定义规则。变量必须在有效的范围内,如果变量超出有效范围,则变量也就失去意义了。其中所说的有效范围就是指——变量的作用域。
2、三种变量作用域解析
     2.1、局部变量——在函数内部定义的变量,其作用域是所在函数。(关于函数的相关内容,我们不久将会学到)
     2.2、全局变量——被定义在所有函数以外的变量,其作用域是整个PHP文件,但在用户自定义函数内部是不可用的。如果希望在用户自定义函数内部使用全局变量,则要使用global关键词声明
     2.3、静态变量——能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。而一般变量是在函数调用结束后,其存储数据将被清除,所占内存将被释放。使用静态变量时,先要用关键字static来声明变量,把关键字static放在要定义的变量之前。
3、下面通过三个例子来了解这三种作用域
      3.1、下面通过一个实例来区分局部变量和全局变量的差别:
     
  1.   <?PHP
  2. echo”局部变量和全局变量的应用”;
  3. $zero=”在……函数外-全局变量”;            //在函数外声明一个变量——全局变量
  4. function zero(){
  5. $zero=”…..在函数内…..-局部变量”;                        //在函数内声明一个变量——局部变量
  6. echo”在函数内输出的内容是:$zero.<br>”;               //在函数内输出这个变量
  7. }
  8. zero();
  9. echo”在函数外输出的内容是:$zero.<br>”;              //在函数外输出这个变量
  10.   ?>
复制代码

     输出结果:
局部变量和全局变量的应用在函数内输出的内容是:…..在函数内…..-局部变量.
在函数外输出的内容是:在……函数外-全局变量
     3.2、下面这个实例是静态变量的应用:
   
  1. <?PHP
  2. function zdy(){
  3. static $zero=0;   //初始化静态变量
  4. $zero+=1;         //静态变量加1,这在变量运算一节中会学到
  5. echo $zero.”";}    //输出静态变量
  6.   function zdy1(){      //自定义函数
  7.   $zero=0;  //声明函数内部变量
  8.   $zero+=1;  //变量加1
  9.   echo $zero.”";}  //输出局部变量
  10.   for($i=0;$i<10;$i++) zdy();  //输出1-10
  11.   echo”<br>”;
  12.   for($i=0;$i<10;$i++) zdy1();  //输出10个1
  13.   echo”<br>”
  14.   ?>
复制代码

输出结果:
12345678910
1111111111
从上例可知:自定义函数zdy()是输出1-10共10个数字,而zdy1()函数则输出的是10个1。因为自定义函数zdy()含有静态变量,而函数zdy1()是一个普通变量。
     3.3、如何使用global关键词声明:

  1. <?PHP
  2. $abc=”不会看到”;   //声明全局变量
  3. $ab=”会看到”;      //什么全局变量
  4. function zero(){   //声明自定义函数
  5. echo $abc.”<br>”;  //能直接输出全局变量吗?
  6. global $ab;  //用global关键词处理全局变量
  7. echo $ab.”<br>”;}   //处理完后全局变量是否能在自定义函数内引用呢?
  8. zero();
  9.   ?>
复制代码

输出结果:
会看到
从上例可知:在自定义函数内无法直接引用全局变量的,必须使用global关键字声明变量后,变量才能得到引用。



上一篇:从7到8,PHP变量之认识PHP变量(作者:zero)
下一篇:【分享】Zero对于SEO的看法
authicon 陶衣小可 发表于 2011-6-17 12:00:12 | 显示全部楼层
这个还是不错的!
authicon 蓝色天空k 发表于 2011-6-21 13:00:06 | 显示全部楼层
顶的就是你
authicon 纤陌陌 发表于 2011-6-23 08:00:29 | 显示全部楼层
哈哈,支持了
authicon soul2511 发表于 2011-8-10 01:59:52 | 显示全部楼层
顶啦,不错吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 07:04

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表