« 12. 什麼是區域變數? | (回到Blog入口) | 14. 什麼是靜態變數? »

13. 什麼是全域變數?

jollen 發表於 October 27, 2006 1:28 PM

在區域變數範圍之外所宣告的變數即全域變數,例如:

<?php $a = 1;
function sum() { echo $a; }
sum(); ?>

這段程式碼執行後不會有任何輸出,因為 $a 變數是屬於區域變數。請注意 PHP 鬆散資料型別的變數使用前是不需要經過任何宣告的,包括 printf()、給定初值等。

因為區域變數的可見度會蓋掉全域變數,所以 sum() 所 echo 出的 $a 變數是一個區域變數,那該如何告訴 function 變數是一個全域變數呢?利用 global 關鍵字即可:

<?php $a = 1;
function sum() { global $a; $a = $a*100; }
sum(); echo $a; ?>

執行結果:

100

第一段程式碼其實存在了二個變數,一個是全域變數 $a,另一個則是區域變數 $a。在第二段程式碼裡,則只有一個全域變數 $a。

對於全域變數另外一個重點就是,倒底全域變數的範圍為何?在 PHP 裡,全域變數也稱為 page-scoped 變數,亦即在同一個檔案裡的 PHP 程式都能看到這個全域變數。

--jollen

版權聲明

請參閱頁面底部的 CC 授權條款。此外,Jollen's PHP 專欄禁止引用、修改與轉貼,如果您想與朋友分享的話,我們只允許網站連結(hyperlink)的形式。

發表一個評論

(如果你此前從未在此 Blog 上發表過評論,則你的評論必須在 Blog 主人驗證後才能顯示,請你耐心等候。)

| Top | Jollen's Forum |
Jollen's PHP 專欄採用 Attribution-NonCommercial-NoDerivs 2.5 授權條款
Copyright(c) 2001-2007,2010 www.jollen.org