0

我听说使用全局变量不好,但是我只是想了解 PHP 语言是如何工作的。我是编码世界的初学者。

为什么可以在函数中创建全局变量?无论是通过使用 global 关键字还是通过超全局变量。我认为这两个动作用于访问函数中的全局变量。我认为创建全局变量的唯一方法是在函数之外创建它。全球范围内。我查看了许多不同的网站,包括w3schools.comphp.net

这只是我创建的一些简单代码,用于尝试了解全局变量与函数的工作方式:

<?php

function sample1() {
    global $a;
    echo $a = "this ";
}

sample1();

function sample2() {
    echo $GLOBALS['$b'] = "is ";
}

sample2();

function sample3() {
    global $c;
    $c = "an ";
}

sample3();
echo $c;

function sample4() {
    $GLOBALS['$d'] = "example ";
}

sample4();
echo $GLOBALS['$d'];

?>

这是代码的结果:

这是一个例子

所有代码都有效,但我不明白我是如何在任何这些代码块上创建全局变量的?全局变量不是在函数之外创建的。如何在函数内部创建它们?我错过了什么?任何回复表示赞赏 - 如果可能,请保持答案简单 - 我想在评论部分进一步讨论这个问题,因为我相信我会有后续问题 - 谢谢

4

1 回答 1

0

可以通过两种方式在全局范围内创建变量 - 没有什么说函数不能在全局范围内创建(或更改)变量 - 当您通过关键字$GLOBALSglobal关键字明确要求时。

问题是您的信念“我认为创建全局变量的唯一方法是在函数之外创建它;在全局范围内。” 不是一个确切的说法。当您使用$GLOBALSandglobal时,您指的是全局范围。您在函数内部引入了对全局范围的引用。

global您实际上是将本地引用链接到全局引用,而您$GLOBALS正在显式引用全局范围(可以在 PHP 内部以相同的方式将其引入本地范围)。

在那种情况下,你明确地说“我希望这个变量在全局范围内可用,让它如此!” PHP 会按照您的要求执行。这种行为因语言而异,但正如您在 PHP 中发现的那样,这是允许的。

我不建议以任何方式使用它——它使你的代码很难遵循和争论,所以把它当作一个深奥的细节。

于 2020-05-10T06:38:54.243 回答