PHP變數範圍詳解

來源:互聯網
上載者:User
變數範圍即它定義的上下文背景(也就是它的生效範圍)。在javascript中,並沒有變數範圍這一概念,相似的可能是範圍。但是,由於javscript使用的是詞法範圍,指變數聲明時的位置;而php並不存在變數聲明,變數在第一次賦值時相當於聲明了變數。所以,二者並不相同。本文將詳細介紹php中的變數範圍。

1、局部變數
局部變數是在函數內聲明的變數,其範圍僅限於函數內部。函數的參數也是局部變數,區別在於,函數參數值來自被調用時傳入的值。執行完畢後函數內部的動態變數都將被釋放。

<?php    function a($b){        $c = 1;        echo "$b+$c = " . ($b+$c) . '<br />';    }    a(2);//輸出3    echo $b+$c;//函數外部的非法訪問,報notice錯誤,並輸出0?>

2、全域變數
在函數外定義的變數稱為全域變數,範圍範圍在定義變數開始到本程式檔案的末尾。
另外,在函數中無法直接調用全域變數,需要使用關鍵字global,也可以使用$GLOBALS來代替global。$GLOBALS 是一個超全域變數。

<?php    //樣本1    $a = 1;    $b = 2;    function Sum(){        global $a, $b;        $b = $a + $b;    }    Sum();    echo $b;//輸出的結果是3    //樣本2    $c = 1;    $d = 2;    function Sum()    {        $GLOBALS['d'] = $GLOBALS['c'] + $GLOBALS['d'];    }    Sum();    echo $d;//輸出3?>

3、靜態變數
靜態變數僅在局部函數域中存在,但當程式執行離開此範圍時,其值並不丟失。靜態變數用static來聲明的,未被static聲明的預設是動態變數。其在函數執行完之後,內部的靜態變數已然儲存在記憶體中。僅在指令碼執行期間,第一次調用該函數時被初始化。

<?php    function test()    {        static $a = 0;        echo $a;        $a++;    }    test();//輸出0    test();//輸出1?>

靜態變數也提供了一種處理遞迴函式的方法。遞迴函式是一種調用自己的函數。寫遞迴函式時要小心,因為可能會無窮遞迴下去。必須確保有充分的方法來中止遞迴。以下這個簡單的函數遞迴計數到 10,使用靜態變數 $count 來判斷何時停止

<?php    function test()    {        static $count = 0;        $count++;        echo $count;        if ($count < 10) {            test();        }        $count--;    }?>

相關推薦:

php變數範圍

php變數範圍,php全域變數與靜態變數

php變數範圍介紹_PHP教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.