在區域變數範圍之外所宣告的變數即全域變數,例如:
<?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