为什么此php代码正确输出?

时间:2019-06-08 04:21:25

标签: php global-variables

是的,我正在学习和学习一些旧的PHP基础知识,后来又接触了superglobals

我不太了解为什么此PHP代码以及为什么在逻辑上10不为15时,超全局变量不加为15,以及帮助或指针,所以我能理解这一点吗?

$y = 10;
$x = 5;

$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];

我尝试自己研究并接受它,因为y只是超级全局索引的名称

除了问题以外什么都没有显示

<?php 
$x = 5; 
$y = 10; 

function myTest() { 
    $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y']; 
} 
myTest(); 
echo $y; // outputs 15 
?>

唯一的错误是我的大脑

查看代码时,我看到$ GLOBAL ['10'] = $ GLOBAL ['5'] + $ GLOBALS ['10'];

我不明白15如何等于10。

1 个答案:

答案 0 :(得分:0)

在函数外引用变量时,它引用的是全局变量。当您在函数内部引用变量时,通常会引用局部变量,除非该函数包含使该变量成为全局变量的global声明。

您还可以使用超级全局$GLOBALS,该超级全局始终引用其键中命名的全局变量。 documentation将其描述为:

  

一个关联数组,包含对当前在脚本的全局范围内定义的所有变量的引用。变量名是数组的键。

因此,当您使用$GLOBALS['y']时,与使用全局变量$y相同。您的功能等同于:

function myTest() { 
    global $x, $y;
    $y = $x + $y;
}