首頁  >  文章  >  後端開發  >  什麼是全域變數? php變數的範圍之全域變數實例詳解

什麼是全域變數? php變數的範圍之全域變數實例詳解

伊谢尔伦
伊谢尔伦原創
2017-05-08 10:55:152395瀏覽

什麼是全域變數?

全域變數也稱為外部變量,是在函數的外部定義的,它的作用域為從變數定義處開始,到這個程式檔案的結尾。和其他程式語言不同,全域變數不是自動設定為可用的。上一章節我們介紹了php變數的範圍的局部變數在PHP中,由於函數可以視為單獨的程式碼片段,所以局部變數會覆蓋全域變數的能見度,因此在函數中無法直接呼叫全域變數。

其程式碼如下所示的格式:

<?php
 $one = 10;
 $two = 20;
 // 测试在函数内部不能直接使用全局变量 $one 和 $two
 function sum(){
   // 在函数内部新声明并且没有赋初始值的两个变量
   echo "运算结果:".($one+$two)."<br>";
 }
 sum();    //调用函数
?>

該程式執行後輸出的結果如下顯示:

运算结果:0             // 两个变量没有初始值则为 NULL ,执行两个空值相加后结果为 0

在上面的實例中,函數sum() 外面宣告了兩個全域變數$one 和$twe,但在PHP中,不能直接在函數中使用全域變數。所以在  sum() 函數中使用的變數為 $one 和 $twe,相當於重新宣告的兩個變量,且沒有被賦予初始值,是兩個未定義空值的運算,所以得到的結果為0。在函數中若要使用全域變量,必須利用關鍵字定義目標變量,而這個全域變數的關鍵字為「 global 」, 使用關鍵字「global」你就可以把全域資料匯入到在一個函數的局部範圍內,以告訴函數主體此變數為全域變數。

下面在函數內部使用關鍵字「global」 呼叫函數外部宣告的全域變數來舉例:

<?php
 $one = 10;
 $two = 20;
 // 测试在函数内部使用关键字加载 global 全局变量 $one 和 $two
 function sum(){
   //在函数内部使用关键字加载 global 全局变量,加载多个使用逗号分隔
   global $one, $two;
   // 使用函数外部声明的全局变量
   echo "运算结果:".($one+$two)."<br>";
 }
 sum();    //调用函数
?>

該程式執行後輸出的結果如下顯示:

运算结果为 30         // 使用 global 关键字就可以加载全局变量在函数内使用

“global”關鍵字是用來導入全域變數的。看起來它工作的很好,而且很簡單,但是還是要對使用“global”關鍵字來定義全域資料而擔心。因為有三個理由:

1、程式碼重用幾乎是不可能的。

如果一個函數依賴全域變量,那麼想在不同的環境中使用這個函數幾乎是不可能的。另外一個問題就是你不能提取出這個函數,然後在其他的程式碼中使用。

2、除錯並解決問題是非常困難的。

追蹤一個全域變數比追蹤一個非全域變數困難的多。一個全域變數可能會在一些不明顯的包含檔案中被重新定義,即使你有一個非常好的程式編輯器(或IDE)來幫助你,你也得花了幾個小時才能發現這個問題所在。

3、理解這些程式碼將是非常困難的事情。

你很難弄清楚一個全域變數是從哪裡來得,它是用來做什麼的。在開發的過程中,你可能會知道知道每一個全域變量,但大概一年之後,你可能會忘記其中至少一般的全域變量,這個時候你會為自己使用那麼多全域變量而懊悔不已。

$GLOBALS

在函數中使用全域變量,除了使用global 關鍵字,還可以使用特殊的php 自訂 $GLOBALS 陣列。前面的例子可以寫成使用  $GLOBALS 取代 global。

程式碼如下顯示:

<?php
 $one = 10;
 $two = 20;
 function sum(){
   //在函数内部使用 $GLOBALS 访问全局变量,
   $GLOBALS["two"] = $GLOBALS["one"] + $GLOBALS["two"];
 }
 sum();    //调用函数
 echo $two;
?>

說明: 在 $GLOBALS 陣列中,每個變數是一個元素,鍵名對應變數名,值對應變數的內容。 $GLOBALS 之所以在全域範圍中存在,是因為它是一個超全域變數。

以上就是全域變數的定義以及php變數的範圍裡面的全域變數實例介紹,下一章將介紹什麼是php的static靜態變數

【相關教學推薦】

1. 《php.cn獨孤九賤(4)-php影片教學

2.  php程式設計從入門到精通全套影片教學

3. php實戰影片教學

#

以上是什麼是全域變數? php變數的範圍之全域變數實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn