搜索
熱搜: 活動 交友 discuz
查看: 2788|回復: 0
打印 上一主題 下一主題

[PHP] PHP 四種變數範圍比較:區域、全域、靜態、參數

[複製鏈接]
跳轉到指定樓層
1#
發表於 2013-8-30 16:26:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
PHP 是一種較為鬆散的語言( Loosely Typed Language ),當我們宣告一個變數時,不須指定變數的型別( type ),PHP 會自動根據指派給該變數的值來判斷該變數的型別。

雖然在宣告變數時不須指定型別,但還有一項必須要指定的--變數的使用範圍( scope )。PHP 有四種不同的使用範圍:local、global、static、parameter,以下將分別介紹。




區域變數 (local variable)

在 function 中宣告
只能在宣告的 function 中使用 (local scope)
不同的 function 中可宣告相同名稱的區域變數
在宣告變數 function 結束時,區域變數也就消滅了
宣告時不需使用任何關鍵字 (keyword)
  1. $a = 5; // 全域

  2. function myTest()
  3. {
  4. echo $a; // 區域
  5. }

  6. myTest();
複製代碼
上例不會輸入任何內容,因為 $a 在function 中未指定值。




全域變數 (global variable)

在 function 外宣告
除了 function 中的 script不能存取外,整個網頁中的 script 都可以存取該變數( global scope )
若要在 function 中使用全域變數,需使用關鍵字 global,見下例
在網頁關閉時,全域變數消滅

$a = 5;
$b = 10;
  1. function myTest()
  2. {
  3. global $a, $b;//注意這行
  4. $b = $a + $b;
  5. }

  6. myTest();
  7. echo $b;
複製代碼
上例輸出 15。

global 變數一旦宣告之後,PHP 會將其放置在 $GLOBALS[index] 這個 array 中,其中 index 就是變數的名稱。我在可以從 function 內存取這個 array,也可以直接指定值給 array 中的某個元素來改變其值。我們將上例改寫如下:
  1. $a = 5;
  2. $b = 10;

  3. function myTest()
  4. {
  5. $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
  6. }

  7. myTest();
  8. echo $b;
複製代碼



靜態變數 (static variable)

如前面所說,區域變數在函式結束時就會消滅。不過有時候,當我們希望某區域變數不因函式結束而消滅,我們可以在第一次宣告該區域變數前,加上關鍵字-- static。
  1. static $rememberMe;
複製代碼
如此一來,每次呼叫該函式時,此變數都會包含上一次呼叫函式時所得到的值。
要注意的是:靜態變數仍是一種區域變數。




參數 (parameter,或稱 argument)

參數指的是一種呼叫函式時傳入的區域變數。其會在函式宣告時的參數列 (parameter list) 中被宣告。
  1. function myTest($para1,$para2,...)//在小括號中宣告
  2. {
  3. // 函式程式碼
  4. }
複製代碼
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2026-5-22 01:21 , Processed in 0.030877 second(s), 17 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表