为了账号安全,请及时绑定邮箱和手机立即绑定

可以使用关键字 global 并通过 PHP 函数中的超全局变量创建全局变量吗?

可以使用关键字 global 并通过 PHP 函数中的超全局变量创建全局变量吗?

PHP
繁花如伊 2023-03-04 17:34:15
我听说使用全局变量不好,但我只是想了解 PHP 语言的工作原理。我是编码世界的初学者。为什么可以在函数内创建全局变量?无论是通过使用全局关键字还是通过超全局变量。我以为这两个动作是用来访问函数中的全局变量的。我认为创建全局变量的唯一方法是在函数外部创建它;在全球范围内。我看过许多不同的网站,包括w3schools.com和php.net这只是我创建的一些简单代码,用于尝试理解全局变量与函数的工作方式:<?phpfunction 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'];?>这是代码的结果:这是一个例子所有代码都有效,但我不明白我是如何在这些代码块中的任何一个上创建全局变量的?全局变量不是在函数之外创建的。如何在函数内部创建它们?我错过了什么?感谢任何回复 - 如果可能,请保持简单的答案 - 我想在评论部分进一步讨论这个问题,因为我相信我会有后续问题 - 谢谢
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

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

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

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

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

我不建议以任何方式使用它——它使您的代码很难理解和争论,因此请将其视为深奥的细节。


查看完整回答
反对 回复 2023-03-04
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信