开发者社区> 问答> 正文

php 能否声明单个全局数组?报错


global $_html['user'] ;//其实我只想这个函数声明为全局函数,但是保存后报错,

我只能  global $_html; // $_html前面我已经定义为数组,申明整个数组为全局


global $_html['user'] ;  //难道语法,还是什么有问题

展开
收起
爱吃鱼的程序员 2020-06-20 16:55:11 506 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    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据结构地址),前提需要一个变量名。知道为什么是变量名,而不是地址了吧?

    2020-06-20 16:55:27
    赞同 展开评论 打赏
问答分类:
PHP
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载