简明现代魔法 -> PHP服务器脚本 -> PHP变量作用域

PHP变量作用域

2009-09-05

PHP变量的4个作用域

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

PHP变量有4种作用域:

局部变量

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

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

函数参数

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

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

全局变量

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

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

<?php
	$var = 15;
	
	function add() {
		GLOBAL $var;
		$var++;
		print "var is $var";
	}
	add();
?>

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

静态变量

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

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

<?php
	function keep_track() {
		STATIC $count = 0;
		$count++;
		print $count;
		print "
"; } keep_track(); keep_track(); keep_track(); ?>

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

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

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

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

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们