Php 简明教程

PHP - Global Variables

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

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

Example

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

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

但是,该变量在该函数内部不可访问。因此,您将收到 error message "未定义变量 $name"。

Hello
PHP Warning: Undefined variable $name in /home/cg/root/93427/main.php on line 5

Example

要在函数内访问,您需要在变量之前使用 "global" 关键字。

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

它将生成以下 output

Hello Amar

如果某个函数访问全局变量并修改该变量,则修改后的值在函数调用完成后随处可用。

让我们在 sayhello() 函数中更改 $name 的值,并在调用该函数后检查其值。

Example

请查看以下示例:

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

它将生成以下 output

Global variable name: Amar
Global variable name changed to: Amarjyot
Global variable name after function call: Amarjyot

The $GLOBALS Array

PHP 维护一个名为 $GLOBALS 的关联数组,其中包含在全局作用域中声明的所有变量及其值。$GLOBALS 数组还存储许多称为超全局变量的预定义变量以及用户定义的全局变量。

任何全局变量也可以在任何函数内访问,方法是在访问箭头元素的常规语法中使用它。例如,全局变量 $name 的值由 $GLOBALS["name"] 提供。

Example

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

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

   function addition() {
      $z = $GLOBALS['x']+$GLOBALS['y'];
      echo "Addition: $z" .PHP_EOL;
   }
   addition();
?>

它将生成以下 output

Addition: 30

Example

您还可以通过将它添加到 $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;
?>

它将生成以下 output

Now z is the global variable. Addition: 30

Including One PHP Script in Another

您可以在另一个 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;
?>

在实现singleton模式、获取嵌入式系统寄存器以及一个变量被多个函数使用时,通常会使用全局变量。