官术网_书友最值得收藏!

3.5 PHP變量

變量是指在程序執(zhí)行過程中數(shù)值可以變化的量。變量通過一個(gè)名字(變量名)來標(biāo)識(shí)。系統(tǒng)為程序中的每一個(gè)變量分配一個(gè)存儲(chǔ)單元,變量名實(shí)質(zhì)上就是計(jì)算機(jī)內(nèi)存單元的命名。因此,借助變量名即可訪問內(nèi)存中的數(shù)據(jù)。

3.5.1 變量聲明及使用

視頻講解:光盤\TM\lx\3\09 變量聲明及使用.mp4

和很多語言不同,在PHP中使用變量之前不需要聲明變量(PHP 4之前需要聲明變量),只需為變量賦值即可。PHP中的變量名稱用$和標(biāo)識(shí)符表示。標(biāo)識(shí)符由字母、數(shù)字或下劃線組成,并且不能以數(shù)字開頭。另外,變量名是區(qū)分大小寫的。

變量賦值,是指給變量一個(gè)具體的數(shù)據(jù)值,對(duì)于字符串和數(shù)字類型的變量,可以通過“=”來實(shí)現(xiàn)。格式為:

        <?php $name = value; ?>

對(duì)變量賦值時(shí),要遵循變量命名規(guī)則。如下面的變量命名是合法的:

        <?php
          $thisCup="oink";
          $_Class="roof ";
        ?>

下面的變量命名則是非法的:

        <?php 
          $11112_var=11112;                       //變量名不能以數(shù)字字符開頭
          $@spcn="spcn";                          //變量名不能以其他字符開頭
        ?>

除了直接賦值外,還有兩種方式可為變量聲明或賦值,一種是變量間的賦值。

【例3.11】變量間的賦值是指賦值后兩個(gè)變量使用各自的內(nèi)存,互不干擾。實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\11)

        <?php
          $string1="mingribook";                  //聲明變量$string1
          $string2=$string1;                      //使用$string1初始化$string2
          $string1="mrbccd";                      //改變變量$string1的值
          echo$string2;                           //輸出變量$string2的值
        ?>

結(jié)果為:mingribook

另一種是引用賦值。從PHP 4開始,PHP引入了“引用賦值”的概念。引用的概念是,用不同的名字訪問同一個(gè)變量內(nèi)容。當(dāng)改變其中一個(gè)變量的值時(shí),另一個(gè)也跟著發(fā)生變化。使用&符號(hào)來表示引用。

【例3.12】在本例中,變量$j是變量$i的引用,當(dāng)給變量$i賦值后,$j的值也會(huì)跟著發(fā)生變化。實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\12)

        <?php
          $i="mingribook";                       //聲明變量$i
          $j=&$i;                                //使用引用賦值,這時(shí)$j已經(jīng)賦值為mingribook
          $i="mrbccd";                           //重新給$j賦值
          echo$j;                                //輸出變量$j
          echo "<br>";
          echo$i;                                //輸出變量$i
        ?>

結(jié)果為:mrbccd

mrbccd

注意

引用和復(fù)制的區(qū)別在于:復(fù)制是將原變量內(nèi)容復(fù)制下來,開辟一個(gè)新的內(nèi)存空間來保存,而引用則是給變量的內(nèi)容再起一個(gè)名字??梢赃@樣理解,一些文學(xué)愛好者經(jīng)常會(huì)向報(bào)紙、雜志投稿,但一般不會(huì)用真名,而是筆名,這個(gè)筆名就可以看作是一個(gè)引用。

3.5.2 變量作用域

視頻講解:光盤\TM\lx\3\10 變量作用域.mp4

在使用變量時(shí),要符合變量的定義規(guī)則。變量必須在有效范圍內(nèi)使用,如果變量超出有效范圍,則變量也就失去其意義了。變量的作用域如表3.9所示。

表3.9 變量的作用域

在函數(shù)內(nèi)部定義的變量,其作用域?yàn)樗诤瘮?shù),如果在函數(shù)外賦值,將被認(rèn)為是完全不同的另一個(gè)變量。在退出聲明變量的函數(shù)時(shí),該變量及相應(yīng)的值就會(huì)被清除。

【例3.13】本例用于比較在函數(shù)內(nèi)賦值的變量(局部變量)和在函數(shù)外賦值的變量(全局變量),實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\13)

        <?php
          $example="在……函數(shù)外";                           //聲明全局變量
          function example(){
              $example="……在函數(shù)內(nèi)……";                   //聲明局部變量
              echo"在函數(shù)內(nèi)輸出的內(nèi)容是:$example.<br>";     //輸出局部變量
          }
          example();                                         //調(diào)用函數(shù),輸出變量值
          echo"在函數(shù)外輸出的內(nèi)容是:$example.<br>";         //輸出全局變量
        ?>

運(yùn)行結(jié)果如圖3.9所示。

圖3.9 局部變量的使用

靜態(tài)變量在很多地方都能用到。例如,在博客中使用靜態(tài)變量記錄瀏覽者的人數(shù),每一次用戶訪問和離開時(shí),都能夠保留目前瀏覽者的人數(shù)。在聊天室中也可以用靜態(tài)變量來記錄用戶的聊天內(nèi)容。

【例3.14】下面使用靜態(tài)變量和普通變量同時(shí)輸出一個(gè)數(shù)據(jù),查看一下兩者的功能有什么不同。實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\14)

        <?php
          function zdy (){
            static$message=0;                        //初始化靜態(tài)變量
            $message+=1;                             //靜態(tài)變量加1
            echo$message."";  }                      //輸出靜態(tài)變量
          function zdy1(){
            $message=0;                              //聲明函數(shù)內(nèi)部變量(局部變量)
            $message+=1;                             //局部變量加1
            echo$message."";  }                      //輸出局部變量
          for($i=0; $i<10; $i++)    zdy();           //輸出1~10
          echo "<br>";
          for($i=0; $i<10; $i++)    zdy1();          //輸出10個(gè)1
          echo "<br>";
        ?>

運(yùn)行結(jié)果如圖3.10所示。

圖3.10 比較靜態(tài)變量和普通變量的區(qū)別

自定義函數(shù)zdy()是輸出從1~10共10個(gè)數(shù)字,而zdy1()函數(shù)輸出的是10個(gè)1。自定義函數(shù)zdy()含有靜態(tài)變量,而函數(shù)zdy1()是一個(gè)普通變量。初始化都為0,再分別使用for循環(huán)調(diào)用兩個(gè)函數(shù),結(jié)果是靜態(tài)變量的函數(shù)zdy()在被調(diào)用后保留了$message中的值,而靜態(tài)變量的初始化只是在第一次遇到時(shí)被執(zhí)行,以后就不再對(duì)其進(jìn)行初始化操作了,將會(huì)略過第3行代碼不執(zhí)行;而普通變量的函數(shù)zdy1()在被調(diào)用后,其變量$message失去原來的值,重新被初始化為0。

全局變量可以在程序中的任何地方訪問,但是在用戶自定義函數(shù)內(nèi)部是不可用的。想在用戶自定義函數(shù)內(nèi)部使用全局變量,要使用global關(guān)鍵字聲明。

【例3.15】在自定義函數(shù)中輸出局部變量和全局變量的值。實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\15)

        <?php
        $hr="黃蓉";                    //聲明全局變量$hr
        function lxt(){
            $gj="郭靖";                //聲明局部變量$gj
            echo$gj."<br>";            //輸出局部變量的值
            global$hr;                 //利用關(guān)鍵字global在函數(shù)內(nèi)部定義全局變量
            echo$hr."<br>";            //輸出全局變量的值
        }
        lxt();
        ?>

結(jié)果為:郭靖

黃蓉

3.5.3 可變變量

視頻講解:光盤\TM\lx\3\11 可變變量.mp4

可變變量是一種獨(dú)特的變量,它允許動(dòng)態(tài)改變一個(gè)變量名稱。其工作原理是該變量的名稱由另外一個(gè)變量的值來確定,實(shí)現(xiàn)過程就是在變量的前面再多加一個(gè)美元符號(hào)“$”。

【例3.16】下面使用可變變量動(dòng)態(tài)改變變量的名稱。首先定義兩個(gè)變量$a和$b,并且輸出變量$a的值,然后使用可變變量來改變變量$a的名稱,最后輸出改變名稱后的變量值,實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\16)

        <?php
          $a="b";                   //聲明變量$a
          $b="我喜歡PHP";           //聲明變量$b
          echo$a;                   //輸出變量$a
          echo "<br>" ;
          echo$$a;                  //通過可變變量輸出$b的值
        ?>

結(jié)果為:b

我喜歡PHP

3.5.4 PHP預(yù)定義變量

視頻講解:光盤\TM\lx\3\12 PHP預(yù)定義變量.mp4

PHP提供了很多非常實(shí)用的預(yù)定義變量,通過這些預(yù)定義變量可以獲取用戶會(huì)話、用戶操作系統(tǒng)的環(huán)境和本地操作系統(tǒng)的環(huán)境等信息。常用的預(yù)定義變量如表3.10所示。

表3.10 預(yù)定義變量

主站蜘蛛池模板: 怀来县| 阿瓦提县| 梅河口市| 沾化县| 凉城县| 潼关县| 绍兴市| 镇平县| 古蔺县| 河池市| 六盘水市| 英吉沙县| 沽源县| 青海省| 将乐县| 扬州市| 安阳市| 延川县| 光山县| 兴文县| 宝丰县| 大石桥市| 武川县| 册亨县| 黄龙县| 鸡泽县| 昌平区| 南岸区| 荃湾区| 北流市| 苏尼特左旗| 乐东| 陆川县| 寿阳县| 武宁县| 伊宁县| 政和县| 伊川县| 汝南县| 华宁县| 榆中县|