可以使用关键字 global 并通过 PHP 中的函数内的超全局变量来创建全局变量吗?
Can global variables be created with the keyword global and through a superglobal variable within a function in PHP?
我听说使用全局变量不好,但我只是想了解 PHP 语言的工作原理。我是编码世界的初学者。
为什么可以在函数内创建全局变量?无论是通过使用全局关键字还是通过超全局变量。我以为这两个动作是用来 access 函数中的全局变量的。我认为创建全局变量的唯一方法是在外部 函数中创建它;在 全局范围 中。我看过许多不同的网站,包括 w3schools.com and php.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'];
?>
这是代码的结果:
这是一个例子
所有代码都有效,但我不明白我是如何在这些代码块上创建全局变量的?全局变量不是在函数 之外 创建的。如何在函数的 内部 创建它们?我错过了什么?感谢任何回复 - 如果可能,请保持简单的答案 - 我想在评论部分进一步讨论这个问题,因为我相信我会有后续问题 - 谢谢
变量可以在全局范围内以你刚才做的两种方式创建——没有什么说函数不能在全局范围内创建(或改变)一个变量——当你通过 $GLOBALS
或 global
关键字。
问题是您的信念 "I thought the only way you can create a global variable is to create it outside a function; in the global scope." 不是一个确切的陈述。当您使用 $GLOBALS
和 global
时,您 指的是全局范围 。您在函数内部引入了对全局范围的引用。
使用 global
实际上是将本地引用链接到全局引用,而使用 $GLOBALS
则显式引用了全局范围(在 PHP 内部可以以同样的方式被引入本地作用域)。
在这种情况下,您明确表示 "I want this variable to be available in the global scope, make it so!" 并且 PHP 执行您要求的操作。此行为因语言而异,但正如您在 PHP 中发现的那样,它是允许的。
我不建议以任何方式使用它 - 它使您的代码很难理解和争论,因此请将其视为深奥的细节。
我听说使用全局变量不好,但我只是想了解 PHP 语言的工作原理。我是编码世界的初学者。
为什么可以在函数内创建全局变量?无论是通过使用全局关键字还是通过超全局变量。我以为这两个动作是用来 access 函数中的全局变量的。我认为创建全局变量的唯一方法是在外部 函数中创建它;在 全局范围 中。我看过许多不同的网站,包括 w3schools.com and php.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'];
?>
这是代码的结果:
这是一个例子
所有代码都有效,但我不明白我是如何在这些代码块上创建全局变量的?全局变量不是在函数 之外 创建的。如何在函数的 内部 创建它们?我错过了什么?感谢任何回复 - 如果可能,请保持简单的答案 - 我想在评论部分进一步讨论这个问题,因为我相信我会有后续问题 - 谢谢
变量可以在全局范围内以你刚才做的两种方式创建——没有什么说函数不能在全局范围内创建(或改变)一个变量——当你通过 $GLOBALS
或 global
关键字。
问题是您的信念 "I thought the only way you can create a global variable is to create it outside a function; in the global scope." 不是一个确切的陈述。当您使用 $GLOBALS
和 global
时,您 指的是全局范围 。您在函数内部引入了对全局范围的引用。
使用 global
实际上是将本地引用链接到全局引用,而使用 $GLOBALS
则显式引用了全局范围(在 PHP 内部可以以同样的方式被引入本地作用域)。
在这种情况下,您明确表示 "I want this variable to be available in the global scope, make it so!" 并且 PHP 执行您要求的操作。此行为因语言而异,但正如您在 PHP 中发现的那样,它是允许的。
我不建议以任何方式使用它 - 它使您的代码很难理解和争论,因此请将其视为深奥的细节。