變量的作用域是變量的一個作用范圍,在這個范圍內變量為可見的,即可以訪問該變量的代碼區域, 相反,如果不在這個范圍內,變量是不可見的,無法被調用。 (全局變量可以將作用范圍看作為整個程序)
花括號
很多語言都以花括號作為作用域界限,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"
URL:http://www.bianceng.cn/webkf/PHP/201410/45954.htm