站長資訊網
        最全最豐富的資訊網站

        php變量的作用域

        php變量的作用域

        作用域(scope),程序設計概念,通常來說,一段程序代碼中所用到的名字并不總是有效/可用的,而限定這個名字的可用性的代碼范圍就是這個名字的作用域。下面我們就為大家介紹一下php變量的作用域。

        推薦教程:php入門視頻教程

        簡單來說有3種作用域:

          局部作用域 全局作用域 超全局作用域

          對應有3種變量:局部變量 全局變量 超全局變量

        局部作用域和局部變量

          就是函數內部的作用域范圍,其中的定義的變量就是局部變量(包括形參也是局部變量)。

          局部變量只能在其函數內部訪問。

          局部變量在函數調用結束時,會被自動銷毀(可以理解為函數執行結束,該執行空間也被銷毀了)。

          由此可見,函數外部不能訪問內部的局部變量。

        靜態變量:一個特殊的局部變量

        含義:

          在函數內部,使用static關鍵字修飾的變量。

        形式:

          function  XXX( .... ){                             static  $s1 = 10;  //此時,$s1就是靜態變量                            ......                       }

        靜態變量的特點:

          靜態局部變量的值不會在函數調用結束時被銷毀,而是會一直保留。

           對比:非靜態的局部變量在函數調用結束時就會被銷毀!

          也就是說,當再次調用函數時,該變量(的值)還能繼續使用。

        全局作用域與全局變量

           就是函數外部范圍的作用域,其中定義的變量就是全局變量。

          全局變量只能在其所在的全局作用域中可以直接使用(訪問)。

        超全局作用域與超全局變量

          包括局部作用域和全局作用域的整個作用域范圍。

          超全局變量可以在所有范圍中使用(訪問)。

          實際上,只有有限的10來個系統預定義變量是超全局變量,包括:$_GET, $_POST, $_REQUEST等。

          所以,系統預定義變量,也被統稱為超全局變量。

        一個特別的超全局變量:$GLOBALS

          它也是一個數組,其中存儲了我們自己定義的所有全局變量。

           每個全局變量的變量名,就是$GLOBALS數組的一個單元。

        比如:

        在全局作用域中定義如下變量:

        $v1 = 1;   //這一行執行,就有了一個這個:$GLOBALS[‘v1’], 其值為1 $v2 = ‘abc’;  //這一行執行,就有了一個這個:$GLOBALS[‘v2’], 其值為’abc’ $v3 = true;  //這一行執行,就有了一個這個:$GLOBALS[‘v3’], 其值為true

        作用:

        可以讓我們在局部作用域范圍中,使用全局變量。

        演示如下:

         $v1 = 10;  //全局變量                function  func1(  ){                           echo  $GLOBALS[‘v1’]; //輸出10;                           echo  $v1;    //報錯:變量v1未定義                           $s1 = $GLOBALS[‘v1’] * 5; //結果為50;                          $s2 = $v1 * 5;    //報錯:變量v1未定義               }

        一個特別的的關鍵字:global

        作用:

           用于在局部作用域中,修飾一個跟全局變量同名的局部變量。

          此時該局部變量也可以使用全局變量的值了——實際上他們其實是類似變量引用關系。

          其作用類似:$GLOBALS

           $a = 10;       function sum(){           global $a ;  //全局變量的引用的別名           $a++;           $b = $a + 1;           echo $b;       }        sum(); //  12       echo $a ; //  11

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲精品二三区| 在线精品亚洲| 亚洲欧美日韩久久精品第一区| 国产精品白丝AV网站| 国产精品久久久天天影视香蕉| 国内精品伊人久久久久AV影院 | 久久精品国产一区| 久久香蕉超碰97国产精品| 久久精品国产国产精品四凭| 99re66在线观看精品免费| 99re6在线精品免费观看| 亚洲国产精品无码AAA片| 蜜臀精品国产高清在线观看| 国产精品成人无码久久久久久| 国产精品久久久福利| 精品永久久福利一区二区| 亚洲精品无码久久不卡| 久久99热这里只有精品国产| 亚洲精品国产成人99久久| 99久久人妻无码精品系列 | 亚洲国产精品成人| 国产精品熟女福利久久AV| 四虎精品免费永久在线| 国产精品专区第二| 97人妻无码一区二区精品免费| 久久99国产精品尤物| 精品无码一区二区三区爱欲九九 | 香蕉99久久国产综合精品宅男自| 国产午夜精品一区二区三区小说 | 国产欧美久久久精品| 国产精品久久久久久| 51视频国产精品一区二区| 黑人巨大精品欧美| 精品国产乱码久久久久久1区2区 | 亚洲午夜国产精品无码| 亚洲精品成人久久久| 亚洲第一永久AV网站久久精品男人的天堂AV | 无码精品国产一区二区三区免费| 亚洲AV永久无码精品一区二区国产| 久久综合精品国产一区二区三区| 久久久久久青草大香综合精品 |