global $_html['user'] ;//其实我只想这个函数声明为全局函数,但是保存后报错,
我只能 global $_html; // $_html前面我已经定义为数组,申明整个数组为全局
global $_html['user'] ; //难道语法,还是什么有问题
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关键字后面需要跟上变量名称。
$_html['user'];//这是在取出数组下标的一种表达式,也就是个地址,真正的变量名称是$ _html
扩展: global声明后,需要把变量名称存储到底层的全局变量表中,使用时根据变量名查找该表(函数表存储方式:变量名称->Z_VALUE据结构地址),前提需要一个变量名。知道为什么是变量名,而不是地址了吧?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。