php 能否声明单个全局数组

yongu 发布于 2014/06/26 23:43
阅读 2K+
收藏 2


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

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


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

加载中
1
工程师爸爸
工程师爸爸

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 变量的名字就是数组的键
yongu
yongu
回复 @D哥 : 明白了,那我数组的地址申明个变量,变量声明为全局数组就可以了
工程师爸爸
工程师爸爸
回复 @yongu : 参见 $GLOBALS ,用法:$GLOBALS['var'] = 123; 结果是一样的。想象下 $GLOBALS[$_html['user']] = 123; 假设$_html['user'] = 'var2'; 等价于:$GLOBALS['var2'] = 123; 等价于:global $var2 = 123;
yongu
yongu
变量知道,数组[0][1]些是地址。global后面不能跟着地址,手册上怎么没标注,求解。授之于鱼。
0
寒川
寒川
所谓的单元素全局不就是一个普通的全局变量啊?
0
qycms_cn
qycms_cn
定义一个类,在类里定义静态变量,数组,就可全局引用了。
0
狂飙的小蜗牛
狂飙的小蜗牛
尽量少用这些自己都搞不懂的语法,如果打算写伪开源程序倒是可以深入研究
0
fxhover
fxhover
global后只能跟变量名,php把 “ $_html['user'] ”当成是变量名了,报错正常。
yongu
yongu
global 这个函数,我在手册上怎么没找到不能跟地址只能跟函数?求解
0
Tuesday
Tuesday
function test(){
    $a = '100';
    $GLOBALS['myvar'] = $a;  // php 不管什么变量, 最终都会在GLOBALS数组中. 并且是超全局的.
}

test();

echo $myvar;


0
帖子列表
帖子列表
$GLOBALS['arr] = array('dog','cat','hongshu');
0
yongu
yongu

引用来自“D哥”的评论

global 关键字后面需要跟上变量名称。

$_html['user']; //这是在取出数组下标的一种表达式,也就是个地址,真正的变量名称是 $_html


扩展:global 声明后,需要把变量名称存储到底层的全局变量表中,使用时根据变量名查找该表 (函数表存储方式:变量名称->Z_VALUE据结构地址),前提需要一个变量名。知道为什么是变量名,而不是地址了吧?

认真,详细。
返回顶部
顶部