PHP 是一種較為鬆散的語言( Loosely Typed Language ),當我們宣告一個變數時,不須指定變數的型別( type ),PHP 會自動根據指派給該變數的值來判斷該變數的型別。
雖然在宣告變數時不須指定型別,但還有一項必須要指定的--變數的使用範圍( scope )。PHP 有四種不同的使用範圍:local、global、static、parameter,以下將分別介紹。
區域變數 (local variable)
- 在 function 中宣告
- 只能在宣告的 function 中使用 (local scope)
- 不同的 function 中可宣告相同名稱的區域變數
- 在宣告變數 function 結束時,區域變數也就消滅了
- 宣告時不需使用任何關鍵字 (keyword)
1
2
3
4
5
6
7
8
| $a = 5; // 全域 function myTest() { echo $a ; // 區域 } myTest(); |
$a
在function 中未指定值。全域變數 (global variable)
- 在 function 外宣告
- 除了 function 中的 script不能存取外,整個網頁中的 script 都可以存取該變數( global scope )
- 若要在 function 中使用全域變數,需使用關鍵字
global
,見下例 - 在網頁關閉時,全域變數消滅
1
2
3
4
5
6
7
8
9
10
11
| $a = 5; $b = 10; function myTest() { global $a , $b ; //注意這行 $b = $a + $b ; } myTest(); echo $b ; |
global 變數一旦宣告之後,PHP 會將其放置在
$GLOBALS[index]
這個 array 中,其中 index 就是變數的名稱。我在可以從 function 內存取這個 array,也可以直接指定值給 array 中的某個元素來改變其值。我們將上例改寫如下:
1
2
3
4
5
6
7
8
9
10
| $a = 5; $b = 10; function myTest() { $GLOBALS[ 'b' ] = $GLOBALS[ 'a' ] + $GLOBALS[ 'b' ]; } myTest(); echo $b; |
靜態變數 (static variable)
如前面所說,區域變數在函式結束時就會消滅。不過有時候,當我們希望某區域變數不因函式結束而消滅,我們可以在第一次宣告該區域變數前,加上關鍵字--static
。
1
| static $rememberMe ; |
如此一來,每次呼叫該函式時,此變數都會包含上一次呼叫函式時所得到的值。
要注意的是:靜態變數仍是一種區域變數。
參數 (parameter,或稱 argument)
參數指的是一種呼叫函式時傳入的區域變數。其會在函式宣告時的參數列 (parameter list) 中被宣告。
1
2
3
4
| function myTest( $para1 , $para2 ,...) //在小括號中宣告 { // 函式程式碼 } |
沒有留言:
張貼留言