为什么 $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
此脚本不会产生任何输出,因为 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.
我已经写了两次相同的代码:在文件的根目录和函数中
$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
此脚本不会产生任何输出,因为 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.