首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >global vs $GLOBALS

global vs $GLOBALS
EN

Stack Overflow用户
提问于 2016-09-11 05:04:51
回答 1查看 442关注 0票数 0

我有这个代码

代码语言:javascript
复制
/// Example 1
$str = "Simple text";
$a = function()
{
    global $str;
    $str = "edited";
};
$a();
echo $str."\n"; /// edited

/// Example 2
$str = "Simple text";
$a = function()
{
    $GLOBALS["str"] = "edited";
};
$a();
echo $str."\n"; /// edited

/// Example 3
$str = "Simple text";
$temp = "";
$a = function()
{
    $GLOBALS["temp"] = &$GLOBALS["str"];
};
$a();
echo "[".$str."] [".$temp."]\n"; /// [Simple text] [Simple text]

/// Example 4
$str = "Simple text";
$temp = "";
$a = function()
{
    global $str, $temp;
    $temp = &$str;
};
$a();
echo "[".$str."] [".$temp."]\n"; /// [Simple text] []

第一个示例显示了同一事物的第二个示例的值的预期变化……看起来没有什么区别,继续吧!在第三个示例中,我们硬链接到超全局数组的函数如预期的那样显示相同的单词,现在看第四个示例,并且...我并没有昏迷,他只链接和显示变量$str,而变量$temp保留为空,为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-11 05:13:19

文档http://php.net/variables.scopehttp://php.net/manual/language.references.spot.php对此有很大的解释

代码语言:javascript
复制
global $a;

是执行以下操作的快捷方式:

代码语言:javascript
复制
$a = &$GLOBALS['a'];

因此,让我们扩展您的最后一个示例:

代码语言:javascript
复制
$a = function()
{
    $str = &$GLOBALS['str'];
    $temp = &$GLOBALS['temp'];
    $temp = &$str;  // okay, but $temp is still the local variable 
};

我想一切都如我所愿。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39430556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档