PHP变量作用域

PHP变量作用域

2009-09-05

PHP变量的4个作用域

在PHP脚本的任何位置都可以声明变量,但是,声明变量的位置会大大影响访问变量的范围。这个可以访问的范围称为作用域scope。

PHP变量有4种作用域:

  • 局部变量
  • 函数参数
  • 全局变量
  • 静态变量

局部变量

在函数内部声明的变量就是局部变量,它保存在内存的栈中,所以速度很快。

局部变量很有用,因为它消除了出线意外副作用的可能性。

函数参数

参数可以按值传递,也可以按引用传递。

任何接受参数的函数都必须在函数首部中声明这些参数。

全局变量

与局部变量相反,全局变量可以在程序的任何地方访问。

只要在变量前面加上关键字GLOBAL,就可以将其识别为全局变量。

  1. <?php  
  2.     $var = 15;  
  3.       
  4.     function add() {  
  5.         GLOBAL $var;  
  6.         $var++;  
  7.         print "var is $var";  
  8.     }  
  9.     add();  
  10. ?>  

如果省略GLOBAL $var;这行代码,变量$var的值在程序运行后的值为1,因为$var在函数add()中被认为是一个局部变量。这个局部声明将隐含地设置为0,然后是1,最后显示的值就是1。

静态变量

函数参数在函数退出时会撤消,而静态变量则不同,静态变量在函数退出时不会丢失值,并且再次调用此函数时还能保留这个值。

在变量名前加上关键字STATIC就可以声明一个静态变量:

  1. <?php  
  2.     function keep_track() {  
  3.         STATIC $count = 0;  
  4.         $count++;  
  5.         print $count;  
  6.         print "<br>";  
  7.     }  
  8.       
  9.     keep_track();  
  10.     keep_track();  
  11.     keep_track();  
  12. ?>  

如果变量$count未指明为STATIC,就是说,$count就会成为一个局部变量,输出将会是“1 1 1”。

但是,因为$count是静态的,它会在每次执行函数时保留前面的值,所以输出为“1 2 3”

静态作用域对递归函数很有用。

递归函数recursive function是一个功能强大的编程概念,它是一个可以重复调用自身的函数,直到满足某个条件为止。

出处http://www.nowamagic.net/php/php_VariableScope.php

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值