正在学习和重新学习一些旧的PHP基础知识,我到了超全局
我不太明白为什么这个 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。
当你引用函数外部的变量时,它指的是全局变量。当您引用函数内的变量时,它通常引用局部变量,除非该函数包含使该变量全局的global
声明。
您也可以使用超全局$GLOBALS
,它始终引用其键中命名的全局变量。文档将其描述为:
一个关联数组,其中包含对当前在脚本全局范围内定义的所有变量的引用。变量名称是数组的键。
因此,当您使用$GLOBALS['y']
时,它与使用全局变量 $y
相同。您的函数等效于:
function myTest() {
global $x, $y;
$y = $x + $y;
}