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

全域性變數通常在實現單例模式、訪問嵌入式系統中的暫存器以及許多函式正在使用變數時使用。

廣告