例如:
| 代碼如下 |
複製代碼 |
<?php $a = 1; include 'b.inc'; ?> |
這裡變數 $a 將會在包含檔案 b.inc 中生效。但是,在使用者自訂函數中,一個局部函數範圍將被引入。任何用於函數內部的變數按預設情況將被限制在局部函數範圍內。例如:
| 代碼如下 |
複製代碼 |
<?php $a = 1; /* global scope */ function Test() { echo $a; /* reference to local scope variable */ } Test(); ?> |
這個指令碼不會有任何輸出,因為 echo 語句引用了一個局部版本的變數 $a,而且在這個範圍內,它並沒有被賦值。你可能注意到 PHP 的全域變數和 C 語言有一點點不同,在 C 語言中,全域變數在函數中自動生效,除非被局部變數覆蓋。這可能引起一些問題,有些人可能不小心就改變了一個全域變數。PHP 中全域變數在函數中使用時必須申明為global。
global 關鍵字
首先,一個使用 global 的例子:
Example #1 使用 global
| 代碼如下 |
複製代碼 |
<?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ?> |
以上指令碼的輸出將是“3”。在函數中申明了全域變數 $a 和 $b,任何變數的所有引用變數都會指向到全域變數。對於一個函數能夠申明的全域變數的最大個數,PHP 沒有限制。
在全域範圍內訪問變數的第二個辦法,是用特殊的 PHP 自訂 $GLOBALS 數組。前面的例子可以寫成:
Example #2 使用 $GLOBALS 替代 global
| 代碼如下 |
複製代碼 |
<?php $a = 1; $b = 2; function Sum() { $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } Sum(); echo $b; ?> |