#1. scope
- 局部变量
- 全局变量
- 超全局变量
- 静态变量
###1. 局部变量 (函数内部变量) 在函数内部声明的变量就是局部变量,它保存在内存的栈中,所以速度很快。 局部变量很有用,因为它消除了出线意外副作用的可能性。
###2. 函数参数 参数可以按值传递,也可以按引用传递。 任何接受参数的函数都必须在函数首部中声明这些参数。 ###3 全局变量 与局部变量相反,全局变量可以在程序的任何地方访问。 只要在变量前面加上关键字GLOBAL,就可以将其识别为全局变量。
如果省略GLOBAL $var;这行代码,变量$var的值在程序运行后的值为1,因为$var在函数add()中被认为是一个局部变量。这个局部声明将隐含地设置为0,然后是1,最后显示的值就是1。 ###4 静态变量 函数参数在函数退出时会撤消,而静态变量则不同,静态变量在函数退出时不会丢失值,并且再次调用此函数时还能保留这个值。 在变量名前加上关键字STATIC就可以声明一个静态变量:
"; } keep_track(); keep_track(); keep_track(); ?>
如果变量$count未指明为STATIC,就是说,$count就会成为一个局部变量,输出将会是“1 1 1”。 但是,因为$count是静态的,它会在每次执行函数时保留前面的值,所以输出为“1 2 3” 静态作用域对递归函数很有用。 递归函数recursive function是一个功能强大的编程概念,它是一个可以重复调用自身的函数,直到满足某个条件为止。
###5 超级全局变量 $_GET $_POST等内嵌超级全局变量无论在函数内还是函数外都是可见的。
###6 条件语句和循环语句中的变量
外部可见,示例代码如下:
if(3>2){ $v = 10; } print_r($v); //输出10