PHP - 全局变量



在 PHP 中,任何可以从 PHP 脚本中的任何位置访问的变量都称为全局变量。如果变量在脚本中的所有函数或类之外声明,则它将成为全局变量

虽然全局变量可以直接在函数外部访问,但它们不会在函数内部自动可用。

在下面的脚本中,$name 对于函数 sayhello() 是全局的。


<?php
   $name = "Amar";
   function sayhello() {
      echo "Hello " . $name;
   }
   sayhello();
?>

但是,该变量在函数内部不可访问。因此,您将收到一条错误消息 “Undefined variable $name”。

Hello 
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();
?>

它将产生以下输出 -

Hello Amar

如果函数访问全局变量并对其进行修改,则修改后的值在函数调用完成后随处可用。

让我们更改 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: Amar
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();
?>

它将产生以下输出 -

Addition: 30

您还可以通过将任何局部变量添加到 $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;
?>

它将产生以下输出 -

Now z is the global variable. Addition: 30

将一个 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;
?>

全局变量通常在实现单例模式、访问嵌入式系统中的寄存器以及许多函数使用变量时使用。