为什么 $GLOBAL 在函数范围内不起作用 - PHP

Why $GLOBAL is not working in function scope - PHP

我已经写了两次相同的代码:在文件的根目录和函数中

$GLOBAL 超全局变量在函数中不起作用。但是同样的事情已经失效了

参考: 1. php_superglobals 2. reserved.variables.globals

代码:

<?php

// working here
$GLOBALS['x'] = "Root of the file";
echo $x;

// same things are not working in the function.
function checkglobal() { 
    $GLOBALS['z'] = "In the function.";
    echo $z;
} 
checkglobal();

输出:

Root of the file

NOTICE Undefined variable: z on line number 10

Click and check here

此脚本不会产生任何输出,因为 echo 语句引用了 $z 变量的本地版本,并且尚未在此范围内为其分配值。您可能会注意到这与 C 语言有点不同,因为 C 中的全局变量自动可用于函数,除非被局部定义特别覆盖。这可能会导致一些问题,因为人们可能会无意中更改全局变量。在 PHP 中,如果要在函数中使用全局变量,则必须在该函数中声明为全局变量。

我发现我的代码有错误。 $GLOBALS 超全局变量用于创建全局变量并在非全局范围内访问它。 如果我们想在非全局范围内直接使用,需要用“global”关键字声明全局变量。

更正代码:

<?php

// working here
$GLOBALS['x'] = "Root of the file";
echo $x;
 
// same things are not working in the function.
function checkglobal() { 
    $GLOBALS['z'] = "In the function.";
    global z; // declare global variable *******************
    echo $z;
} 
checkglobal();

输出:

Root of the file

In the function.