PHP - 全局变量



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

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

示例

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

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

但是,在函数内部无法访问该变量。因此,您将收到错误消息“未定义变量 $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 数组还存储许多称为超全局变量的预定义变量,以及用户定义的全局变量。

任何全局变量也可以在任何函数内部使用访问箭头元素的常规语法进行访问。例如,全局变量$name的值由$GLOBALS["name"]给出。

示例

在下面的示例中,两个全局变量 $x 和 $y 在 addition() 函数内部访问。

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

它包含“b.php”,其中包含$x$y变量,因此它们成为“a.php”脚本中addition()函数的全局变量。

<?php
   $x = 10;
   $y = 20;
?>

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

广告