2

3.3PHP变量的作用域

Posted by 撒得一地 on 2015年10月7日 in PHP入门教程

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

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

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

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

在函数内部定义的变量,其作用域为所在函数,如果函数外赋值,将被认为是完全不同的另一个变量。在退出声明变量的函数时,该变量及相应的值就会被清除。

实例1:

<?php
  //声明全局变量
  $str = "我在函数外";

  function fun(){
     //定义局部变量
     $str = "我在函数内";
     echo $str."<br/>";
  }
  //调用函数
  fun();
  echo $str;
?>
上面输出结果:
我在函数内
我在函数外

静态变量在很多地方都用到,比如在博客中使用静态变量来记录浏览者的人数,每一次用户访问和离开时,都能够记录目前浏览者的人数。

实例2:

<?php
 function myfun(){
   //初始化静态变量
   static $num = 0;
   //静态变量加1
   $num += 1;
   echo $num." ";
 } 

 function myfun2(){
   $num = 0;
   $num +=1;
   echo $num." ";
 } 

 //调用两次myfun
 myfun();
 myfun();

 //输出换行
 echo "<br/>";
 myfun2();
 myfun2();
?>

上面的运行结果:
1 2
1 1

这里要十分注意的是,静态变量的初始化只是在第一次遇到时被执行,以后不再对其进行初始化操作。每次调用完函数后,静态变量的值仍存在内存中,不会进行清空。

全局变量可以在程序中的任何地方访问,但在用户自定义函数内是不可用的。想要在用户自定义函数内部使用全局变量,要使用global关键字声明。

实例3:

<?php
  //声明全局变量$a和$b
  //并为全局变量赋值
  $a  =  1 ;
  $b  =  2 ;
  function  Sum()
 {  
    /*要想在Sum函数内使用全局变量
      必须用global对变量$a和$b进行
      内部声明
    */
    global  $a , $b ;
    $b  =  $a  +  $b ;
 }
 Sum ();
 echo  $b ;
?> 
上面的输出结果:
3

对于一个函数能够声明的全局变量的最大个数,PHP没有限制。在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义$GLOBALS数组。前面的例子可以写成:

<?php
 $a  =  1 ;
 $b  =  2 ;
 function  Sum()
 {
     $GLOBALS [ 'b' ]=$GLOBALS[ 'a' ]+ $GLOBALS[ 'b' ];
 }
 Sum ();
 echo  $b ;
?>  

大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。例如:

<?php
$a  =  1 ;
include  'b.inc' ;
?> 

这里变量$a将会在包含文件 b.inc 中生效。

PHP变量的作用范围使用时要十分小心,要区别局部变量和全局变量的使用。

标签:, , , ,

上一篇:

下一篇:

相关推荐

2 Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

4 + 2 = ?

网站地图|XML地图

Copyright © 2015-2018 技术拉近你我! All rights reserved.
闽ICP备15015576号-1,版权所有©psz.