變數的範圍是變數的一個作用範圍,在這個範圍內變數為可見的,即可以訪問該變數的代碼地區, 相反,如果不在這個範圍內,變數是不可見的,無法被調用。 (全域變數可以將作用範圍看作為整個程式)
花括弧
很多語言都以花括弧作為範圍界限,PHP中只有函數的花括弧才構成新的範圍。
01 <?php
02 if (True) {
03 $a = 'var a';
04 }
05
06 var_dump($a);
07
08 for ($i = 0; $i < 1; $i++) {
09 $b = 'var b';
10 for ($i = 0; $i < 1; $i++) {
11 $c = 'var c';
12 }
13 var_dump($c);
14 }
15
16 var_dump($b);
17 var_dump($c);
18 ?>
運行結果是:
1 string(5) "var a" string(5) "var c" string(5) "var b" string(5) "var c"
可見if和for的花括弧並無構成新的範圍。
而函數:
1 <?php
2 function test() {
3 $test = 'var test';
4 }
5
6 test();
7 var_dump($test);
8 ?>
結果是:
1 NULL
global關鍵字
PHP的執行是以一個.php指令碼為單位,在一個.php指令碼的執行過程中,可以include和require其他PHP指令碼進來執行。
執行的.php指令碼與include/require進來的指令碼共用一個全域域(global scope)。
global關鍵字無論在哪層,所引用的都是全域域的變數。
01 <?php
02 $test = 'global test';
03 function a() {
04 $test = 'test in a()';
05 function b() {
06 global $test;
07 var_dump($test);
08 }
09 b();
10 }
11
12 a();
13 ?>
執行結果是:
1 string(11) "global test"