1.global在整个页面起作用。
2.static只在function和class内起作用。
global和$GLOBALS使用基本相同,但在实际开发中大不相同.
global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,一但改变了别名变量的指向地址,就会发生一些意料不到情况.
$GLOBALS[]确确实实调用是外部的变量,函数内外会始终保持一致.
PHP实例代码如下:
- <?php
-
- $k = 0;
- function test1() {
- global $k;
- static $i = 0;
- echo 'i:', ++$i, '<br/>';
- echo 'k:', ++$k, '<br/>';
- }
- test1();
- test1();
- echo 'i:', $i, '<br/>';
- echo 'k:', $k, '<br/>';
-
- echo '------------------<br/>';
-
- function test2() {
- global $k;
- static $i = 0;
- echo 'i:', ++$i, '<br/>';
- echo 'k:', ++$k, '<br/>';
- }
- test2();
- test2();
- echo 'i:', $i, '<br/>';
- echo 'k:', $k, '<br/>';
-
- $m = 0;
- $n = 0;
- function test3() {
- global $m;
- echo 'm:', $m++ , '<br/>';
- echo 'n:', $GLOBALS['n']++ , '<br/>';
- unset($m, $GLOBALS['n']);
- }
- echo '------------------<br/>';
- test3();
-
- echo 'm:', $m, '<br/>';
- echo 'n:', $n, '<br/>';
-
- echo '------------------<br/>';
-
- static $x = 0;
- function test4() {
- echo 'x:', $x++ , '<br/>';
- }
-
- test4();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
global关键字如果用在function内部,则说明这个function内用的这个变量是全局的,全局变量就是在整个页面里都能起作用.
static就是表示静态,所谓的静态,其实是在function或者class内部而言的,function中static的变量,在funciton执行完之后,不会消失,可以在下次执行的时候继续使用. |