PHP的變數類型和範圍詳解

來源:互聯網
上載者:User

 什麼是變數的範圍?變數的範圍是指在指令碼的一次生命週期內變數的有效範圍。一般來說有全域和局部之分

PHP中變數的範圍可以分為:超全域(全域變數的特殊類型,在局部範圍裡可直接使用),全域,局部,靜態(是局部變數的特殊類型)在PHP中,全域變數實際上是靜態全域變數,如果不用unset顯式的釋放,那麼等指令碼運行結束全域變數才會被釋放掉局部靜態變數細分可以是 局部靜態函數變數(函數中聲明的static變數),局部靜態成員變數(類中聲明的 static 屬性,被所有類執行個體共用)局部靜態變數只有指令碼運行結束才會被自動釋放 超全域變數:在一個指令碼的任何範圍裡都可以被訪問,這些都是PHP內建的  代碼如下:$GLOBALS$_SERVER$_GET$_POST$_FILES$_SESSION(持久化儲存)$_COOKIE(持久化儲存)$_REQUEST$_ENV全域變數:聲明的變數不在class,function,if等語言結構內部,如果要在class,function,if等語言內部使用,需要用關鍵詞global或者超全域變數$GLOBALS 靜態變數: 在function中使用關鍵詞static聲明的變數,靜態變數的值保留直至指令碼結束局部變數:在class,function,if/while/for等結構語句內部聲明的變數 1.global關鍵詞和$GLOBALS執行個體代碼如下:<?php$a = 0;function foo(){    global $a;    echo $a;}function foo2(){    echo $GLOBALS['a'];}2.static 變數和普通局部變數區別執行個體代碼如下:<?phpfunction foo1(){    $var = 0;    $var++;    return $var;}echo foo1();echo foo1();//輸出都是1function foo (){    static $var = 0;    $var++;    return var;}echo foo();echo foo();//第一次輸出1 第二次23.static 關鍵詞還可以聲明靜態屬性和靜態方法靜態屬性只能被類調用,而不能被類執行個體調用靜態方法裡不能使用$this,只能用self訪問類的靜態屬性 另外理解static變數的一段代碼:  代碼如下:<?phpclass t{        static $v = 10;        public function a()        {                static $var = 10;                $var++;                echo $var . "<br>n";        }        public static function aa()        {                self::$v++;                echo self::$v . "<br>n";        }}$o1 = new t();$o1->a();//輸出11$o2 = new t();$o2->a();//輸出12t::aa();//輸出11$o1->aa();//輸出12$o2->aa();//輸出13 從上面的代碼中,可知如果一個類成員方法中有靜態變數,即使是不同的類執行個體,他們也會共用這個靜態變數,儘管這個靜態變數不是類靜態成員變數,這點容易讓人迷惑。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.