PHP比较static global与GLOBALS用法

发布时间:2020-09-21编辑:脚本学堂
本文介绍了php编程中,static、global与GLOBALS的用法与区别,通过实例来掌握三者的用法,有需要的朋友参考下。

例子,PHP中static global与GLOBALS用法。
 

复制代码 代码示例:
<?php 
// 比较global、GLOBALS、static 
$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();

结果:
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直接删除了变量