global关键字后面需要跟上变量名称。
$_html['user'];//这是在取出数组下标的一种表达式,也就是个地址,真正的变量名称是$
_html
扩展:
global声明后,需要把变量名称存储到底层的全局变量表中,使用时根据变量名查找该表(表存储方式:变量名称->Z_VALUE据结构地址),前提需要一个变量名。知道为什么是变量名,而不是地址了吧?
回复
@yongu:测试代码:$var1=123;$arr=['var2'=>'var1'];$GLOBALS[$arr['var2']]=456;echo$var1;回复
@yongu:http://www.php.net/manual/zh/reserved.variables.globals.php变量的名字就是数组的键回复
@D哥:明白了,那我数组的地址申明个变量,变量声明为全局数组就可以了回复
@yongu:参见$GLOBALS,用法:$GLOBALS['var']=123;结果是一样的。想象下$GLOBALS[$_html['user']]=123;假设$_html['user']='var2';等价于:$GLOBALS['var2']=123;等价于:global$var2=123;变量知道,数组[0][1]些是地址。global后面不能跟着地址,手册上怎么没标注,求解。授之于鱼。所谓的单元素全局不就是一个普通的全局变量啊?定义一个类,在类里定义静态变量,数组,就可全局引用了。尽量少用这些自己都搞不懂的语法,如果打算写伪开源程序倒是可以深入研究global后只能跟变量名,php把“
$_html['user']”当成是变量名了,报错正常。
global这个函数,我在手册上怎么没找到不能跟地址只能跟函数?求解
functiontest(){$a='100';$GLOBALS['myvar']=$a;//php不管什么变量,最终都会在GLOBALS数组中.并且是超全局的.}test();echo$myvar;
$GLOBALS['arr]=array('dog','cat','hongshu');
引用来自“D哥”的评论
global关键字后面需要跟上变量名称。
$_html['user'];//这是在取出数组下标的一种表达式,也就是个地址,真正的变量名称是$
_html
扩展:
global声明后,需要把变量名称存储到底层的全局变量表中,使用时根据变量名查找该表(函数表存储方式:变量名称->Z_VALUE据结构地址),前提需要一个变量名。知道为什么是变量名,而不是地址了吧?