关于php全局变量的问题

zr443 2008-12-11 01:27:37
大家好,我以前在函数中用全局变量一直用global $aaa;但是我想我在函数外面$GLOBALS['aaa']=3;之后在是不是在函数内就不用global $aaa了呢?我今天测试了一下不行、代码如下:
<?php
$GLOBALS['aaa']=3;
//echo $aaa;
function bbb()
{
$aaa=8;
}
bbb();
echo $aaa;
?>
输出还是3。
非得
<?php
$GLOBALS['aaa']=3;
//echo $aaa;
function bbb()
{
global $aaa;
$aaa=8;
}
bbb();
echo $aaa;
?>
输出才是8,那$GLOBALS['aaa']=3;岂不是变得毫无意义了。请高人解释!
...全文
1257 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
轮回乄判官 2011-04-12
  • 打赏
  • 举报
回复
你好,我感觉你在外面用globals声明全局变量,成立了,但是函数里面你又声明了一个局部的$aaa,所以当你输出的时候,输出的是全局的$aaa,你函数里面的赋值,是给局部变量赋值呢,而不是给全局变量,明白吗?
zhipingw2006 2009-02-26
  • 打赏
  • 举报
回复
为什么这样不安全?
程序猿之殇 2008-12-11
  • 打赏
  • 举报
回复
$GLOBALS['aaa']=3; 不代表$aaa是全局变量
程序猿之殇 2008-12-11
  • 打赏
  • 举报
回复
function bbb()
{
$aaa=8;
}
$aaa是局部变量,它的生命周期是在函数内部,所以不会影响外面的值.明白??
cyxin2121921 2008-12-11
  • 打赏
  • 举报
回复
mark
zr443 2008-12-11
  • 打赏
  • 举报
回复
其实还不是很明白,
$GLOBALS['aaa']=3;之后
echo $aaa//=3;
那实际上$GLOBALS['aaa']和$aaa是不是就是等同的关系?
程序猿之殇 2008-12-11
  • 打赏
  • 举报
回复
$GLOBALS['aaa']=3
只是在$GLOBALS这个全局变量数组里增加一个索引为aaa的值而矣,这样你就可以在当前文件的任意地方调用,而不用global声明.
$GLOBALS是超级全局变量.
zr443 2008-12-11
  • 打赏
  • 举报
回复
我试了一下这样确实可以的。
<?php
$GLOBALS['aaa']=3;
function bbb()
{
$GLOBALS['aaa']=8;
}
bbb();
echo $aaa;
?>

但是在函数中还是要用$GLOBALS来访问变量。
zr443 2008-12-11
  • 打赏
  • 举报
回复
那$GLOBALS['aaa']=3是什么意思,不是将$aaa设为全局变量吗?既然叫全局变量了为什么还要在函数里global $aaa;
程序猿之殇 2008-12-11
  • 打赏
  • 举报
回复
可以这样使用,但最好不要用,这样是不安全的作法.

$GLOBALS['aaaa'] = 222;
function test()
{
$GLOBALS['aaaa'] = 333;
}
test();
echo $GLOBALS['aaaa']; //333
程序猿之殇 2008-12-11
  • 打赏
  • 举报
回复
function bbb()
{
global $aaa;
$aaa=8;
}
global用来声明是全局变量,不加就是局部变量,只在函数内部有效.

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧