PHP中比较static , global , GLOBALS

阅读更多
';
	echo 'k:', ++$k, '
'; } test1(); test1(); echo 'i:', $i, '
'; echo 'k:', $k, '
'; echo '------------------
'; function test2() { global $k; static $i = 0; echo 'i:', ++$i, '
'; echo 'k:', ++$k, '
'; } test2(); test2(); echo 'i:', $i, '
'; echo 'k:', $k, '
'; $m = 0; $n = 0; function test3() { global $m; echo 'm:', $m++ , '
'; echo 'n:', $GLOBALS['n']++ , '
'; unset($m, $GLOBALS['n']); } echo '------------------
'; test3(); echo 'm:', $m, '
'; echo 'n:', $n, '
'; echo '------------------
'; static $x = 0; function test4() { echo 'x:', $x++ , '
'; } test4();


结果如下:

i:1
k:1
i:2
k:2
i:
k:2
------------------
i:1
k:3
i:2
k:4
i:
k:4
------------------
m:0
n:0
m:1
n:
------------------
x:

static 作用域 function class中,相同的function class共用相同的变量
global、GLOBALS 全局作用域
global 会产生一个引用到变量
GLOBALS 直接操作变量
所以unset global变量的时候,全局变量不改变,而GLOBALS直接删除了变量

你可能感兴趣的:(PHP中比较static , global , GLOBALS)