总结:
A:1全局变量相当于有3个变量,函数外部的变量,函数内部的变量,及$GLOBAL的超全局变量。
----$GLOBAL是全局唯一的,而$var在为全局变量的别名。
B:无论函数内部外部,只要曾经声明过全局变量,则$GLOBAL为全局的,无需再次声明;
C:在函数内部unset $var1 不会影响外部的变量,以及$GLOBAL['var1'];
----在函数内部的变量 global $var1 应是全局变量在函数内的一个别名,
D:在函数外部unset($var1),$GLOBAL['var1']依然存在。
E:在函数外部 unset($GLOBALS['var1']) 后,$var1仍然存在;
F:如果在函数外部声明一个全局变量global $var,则$GLOBAL['var'] 指向同一地址。但是函数内部的$var 与其没有关系,除非使用global传递进来。
G:如果在函数内部声明一个全局变量global $var,则$GLOBAL['var'] 指向同一地址。但是外部的 $var 与其没有关系,除非使用global 传递过来。
1、如果想在PHP中使用全局变量,可参考下图:
---需要在外部用global声明,同时在函数内部进行声明,否则在函数内部会当局部变量。
2、在外部不用global则外部的就是不是全局变量,无法在函数内部使用:
----内部用了关键字global,在内部或外部$global['var1']、$global['var2]均为全局变量;
3、注释函数内部的global,则变量$var1 $var2 在函数内部的为局部变量,与外部互补干涉。则$GLOBALS为全局变量;
4、当不用global时,外部变量无法在函数内使用,内部变量无法影响外部函数,且无$GLOBALS可用;
5、unset($GLOBALS) 只会unset $GLOBALS,函数内部的全局变量不受影响;
6、在函数内部unset 变量,只是把内部的变量unset掉了。
-----函数内的全局变量只是一个全局变量的别名而已。
7、&引用,就是改变了变量的地址值(变量的引用传递)。
--在函数中把$GLOBAL['var2']指向了 $GLABAL['var1'],所以在函数内部时均一致;
--在函数外部var1 与 $GLOBALS['var1']一致,所以这3个变量一致。全局变量var1在函数内外时均一致;
--在函数内部的var2 与外部的var2 为同一个变量,在内外时均一致;
--此时只是把 $GLOBALS['var2']的因为修改为了var1,其它变量的值均为变化。