首頁 >後端開發 >php教程 >PHP變數範圍詳解

PHP變數範圍詳解

墨辰丷
墨辰丷原創
2018-05-10 15:06:572195瀏覽

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

1、局部變數 
局部變數是在函數內宣告的變量,其作用域僅限於函數內部。函數的參數也是局部變量,差別在於,函數參數值來自被呼叫時傳入的值。執行完畢後函數內部的動態變數都會被釋放。 

<?php
    function a($b){
        $c = 1;        echo "$b+$c = " . ($b+$c) . &#39;<br />&#39;;
    }
    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[&#39;d&#39;] = $GLOBALS[&#39;c&#39;] + $GLOBALS[&#39;d&#39;];
    }
    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教學

以上是PHP變數範圍詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn