在 PHP 中,任何可以从 PHP 脚本中的任何位置访问的变量都称为全局变量。如果变量在脚本中的所有函数或类之外声明,则它将成为全局变量。
虽然全局变量可以直接在函数外部访问,但它们不会在函数内部自动可用。
例
在下面的脚本中,$name 对于函数 sayhello() 是全局的。
<?php
$name = "Amar";
function sayhello() {
echo "Hello " . $name;
}
sayhello();
?>
但是,该变量在函数内部不可访问。因此,您将收到一条错误消息 “Undefined variable $name”。
PHP Warning: Undefined variable $name in /home/cg/root/93427/main.php on line 5
例
要在函数中获取访问权限,您需要在变量之前使用 “global” 关键字。
<?php
$name = "Amar";
function sayhello() {
GLOBAL $name;
echo "Hello " . $name;
}
sayhello();
?>
它将产生以下输出 -
如果函数访问全局变量并对其进行修改,则修改后的值在函数调用完成后随处可用。
让我们更改 sayhello() 函数中 $name 的值,并在调用函数后检查其值。
例
看看下面的例子 -
<?php
$name = "Amar";
function sayhello() {
GLOBAL $name;
echo "Global variable name: $name" .PHP_EOL;
$name = "Amarjyot";
echo "Global variable name changed to: $name" .PHP_EOL;
}
sayhello();
echo "Global variable name after function call: $name" .PHP_EOL;
?>
它将产生以下输出 -
Global variable name changed to: Amarjyot
Global variable name after function call: Amarjyot
$GLOBALS 阵列
PHP 维护一个名为 $GLOBALS 的关联数组,该数组包含在全局范围内声明的所有变量及其值。$GLOBALS 数组还存储了许多称为超全局变量的预定义变量,以及用户定义的全局变量。
借助访问 箭头(arrow) 元素的常规语法,也可以在任何函数中访问任何全局变量。例如,全局变量 $name 的值由 $GLOBALS[“name”] 给出。
例
在下面的示例中,在 addition() 函数中访问两个全局变量 $x 和 $y。
<?php
$x = 10;
$y = 20;
function addition() {
$z = $GLOBALS['x']+$GLOBALS['y'];
echo "Addition: $z" .PHP_EOL;
}
addition();
?>
它将产生以下输出 -
例
您还可以通过将任何局部变量添加到 $GLOBALS 数组中,将其添加到全局范围内。让我们在全局范围内添加 $z。
<?php
$x = 10;
$y = 20;
function addition() {
$z = $GLOBALS['x']+$GLOBALS['y'];
$GLOBALS['z'] = $z;
}
addition();
echo "Now z is the global variable. Addition: $z" .PHP_EOL;
?>
它将产生以下输出 -
将一个 PHP 脚本包含在另一个 PHP 脚本中
您可以将一个 PHP 脚本包含在另一个 PHP 脚本中。在包含的脚本中声明的变量将添加到包含该脚本的 PHP 脚本的全局范围内。
这是 “a.php” 文件 −
<?php
include 'b.php';
function addition() {
$z = $GLOBALS['x']+$GLOBALS['y'];
echo "Addition: $z" .PHP_EOL;
}
addition();
?>
它包括具有 $x 和 $y 变量的 “b.php”,因此它们成为 “a.php” 脚本中 addition() 函数的全局变量。
<?php
$x = 10;
$y = 20;
?>
全局变量通常在实现单例模式、访问嵌入式系统中的寄存器以及许多函数使用变量时使用。