天天看點

PHP聲明變量

變量是指在程式的運作過程中随時可以發生變化的量,在代碼中可以隻使用一個變量,也可以使用多個變量,變量中可以存放單詞、數值、日期以及屬性等。變量的值是臨時的,當程式運作的時候,該值是存在的,如果程式結束,變量的值就會丢失。雖然在前面的示例中也使用到了變量,但是沒有詳細的說明,本節将詳細介紹如何建立變量,以及如何引用變量。

2.4.1  建立變量

PHP中的變量是用美元符号($)作為字首的标示符,辨別符是一個辨別不同對象的符号,如變量的名稱,函數的名稱,或者其他使用者自定義對象的名稱。在PHP中,辨別符的命名必須符合下面的規定:

l  辨別符可以由一個或多個字元組成,但必須以字母或下劃線開頭。此外,辨別符隻能由字母、數字、下劃線字元和從127到255的其他ASCII字元組成。如my_a、Ss、_value這些辨別符名稱都是合法的,而q^a、4tt這些變量的名稱是不合法的。

l  辨別符區分大小寫。是以,變量$recipe不同于變量$Recipe、$rEciPe或$recipE。

l  辨別符可以是任意長度。這很有好處,因為這樣一來,程式員就能通過辨別符名準确地描述辨別符的用途。

l  辨別符名稱不能與任何PHP預定義關鍵字相同。

在建立變量的過程中,先聲明變量,再給變量指派是一個好的習慣。由于PHP是一種弱類型語言,在聲明變量時,不需要顯示聲明變量,變量可以存放任何類型的值,在PHP中,變量在運作時進行類型檢查,并且可以用另一個不同類型的值取代變量的值,下面聲明一個變量,并且讓另一個不同類型的值取代變量的值,再為聲明一個沒有指派的變量,具體代碼如下所示:

$what = “Yound Tang”;

$what = 25;

$name;

在PHP中,給變量指派有兩種方式,分别為值指派和引用指派。值指派是直接把一個數值通過指派表達式複制給變量,會把該變量原來的數值覆寫,如果在聲明變量時,沒有指派,其行為就形同NULL。在聲明變量時指派是一種常用的變量的指派方法,使用示例如下所示:

$name = “唐曉陽”;

$age = “23”;

$sex = “男”;

echo “你的姓名是:”.$name.”<br/>”;

echo “你的年齡是:”.$age.”<br/>”;

echo “你的性别是:”.$sex.”<br/>”;

執行該段代碼,執行結果如下所示:

你的姓名是:唐曉陽

你的年齡是:23

你的性别是:男

在PHP中,聲明變量可以直接指派,也可以不指派,當需要使用變量存儲值時,可以引用變量指派,引用指派表示所建立的變量與另一個變量引用的内容相同。是以,如果多個變量引用了同一個内容,修改其中任意一個變量,在其餘的變量上都将有所反映。在等于号後面加一個&符号就可以完成引用指派。引用指派的示例形式如下所示。

$value1="Hello World";

$value2=& $value1;

$value2="GoodBye";

echo $value1.”<br/>”;

echo $value2.”<br/>”;

在上述代碼中,建立一個變量value1并指派為“Hello World”,在下面的語句中,變量$value2采用了引用指派,即把value1的值賦給了value2,此時這兩個變量就是一個生命共同體了,當一個發生變化,另外一個就會顯示出結果,該段代碼執行結果如下所示:

GoodBye

GoodBye

2.4.2  變量作用域

聲明變量的位置決定了變量的作用域,變量的作用域決定了程式的那些部分可以通路該變量,那些部分不可以通路該變量,在PHP中,變量的作用域範圍可以分為四類:局部變量、函數參數、全局變量和靜态變量,本節主要介紹變量的這幾種作用域範圍。

​1.局部變量​

在一個函數中聲明一個變量是那個函數的局部變量,也就是說該變量隻能被函數内部成員通路,函數外部成員是不能通路該變量,并且不可見。預設情況下,函數内部成員不能通路函數外定義的變量(平常所說的的全局變量)。有時局部變量很有用,因為局部變量能夠消除出現一位副作用的可能性,否則這些副作用将導緻可全局通路的變量被有意或無意地修改。下面建立一個使用局部變量的示例,該示例如代碼2.13所示。

代碼2.13  使用局部變量

<?php

    $count =10;

    function AddCount()

    {

              $count = 100;

              $count = $count + $count;

              echo $count;

              echo "&lt;br/>";

    }

    AddCount();

    echo $count;

?&gt;

執行代碼2.13,執行結果如下所示:

200

10

有輸出結果知,該段代碼輸出了兩個不同的值,這是因為函數AddCount函數中的變量為局部變量,修改局部變量的值不會影響函數外部的任何值,函數中的變量在程式結束時被抛棄,是以全局變量值還是10。

​2.函數參數​

在PHP中,函數可以接受相應的參數,雖然這些參數是接受函數外部的值,但退出函數後就無法通路這些參數,在函數執行結束後,參數的值就會消失,和函數的執行有很大的關系。函數參數是在函數後面的括号内聲明,下面使用該參數建立一個示例,該示例如代碼2.14所示。

代碼2.14  運用函數參數

<?php

   function EchoNum($age,$class)

   {

         echo "你的年齡是:".$age."&lt;br/>";

         echo "所在班級:".$class;

   }

   EchoNum(18,"計算機技術與科學系08級5班");

?&gt;

執行該段代碼,執行結果如下所示:

你的年齡是:18

所在班級:計算機技術與科學系08級5班

函數參數也可以稱為是局部變量,意味着這些參數隻在函數内部起作用,在函數的外部不能通路這些變量,同樣當函數執行結束時,變量同樣也會撤銷。

​3.全局變量​

全局變量可以在整個PHP程式中,任何地方通路,但是如果要修改一個全局變量,必須在修改該變量的函數中顯式的聲明為全局變量,在函數中顯示聲明全局變量很簡單,隻需在函數中使用global關鍵字聲明就可以,下面建立一個使用全局變量的示例,具體講解在函數中如何修改全局變量,該示例如代碼2.15所示。

代碼2.15  在函數中修改全局變量

<?php

   function AddNum()

   {

        global $num;

        $num = $num + $num ;

        echo $num ;

   }

   $num = 100;

   AddNum();

?>

執行代碼2.15,執行結果如下所示:

200

如果不在$num前加global,該變量會被認為是局部變量,此時頁面上顯示的值為0;添加global後,就可以修改全局變量了,聲明全局變量還有另外一種方法,那就是使用PHP的$GLOBALS數組,使用該數組和使用global的效果一樣,下面建立一個使用$GLOBALS數組的示例,該示例如代碼2.16所示。

代碼2.16  使用$GLOBALS數組

<?php

   function AddNum()

   {

        $GLOBALS['num'] =$GLOBALS['num']+$GLOBALS['num']  ;

        echo "該值是:".$GLOBALS['num'] ;

   }

   $num = 100;

   AddNum();

?>

執行代碼2.16,執行結果如下所示:

該值是:200

在使用全局變量時,一定要注意,因為使用全局變量很容易發生意外。

​4.靜态變量​

靜态變量在兩次調用函數之間其值不變,靜态變量僅在局部函數域中聲明,用關鍵字static可以聲明一個靜态變量。靜态變量在函數退出時,不會丢失值,并且再次調用此函數時,還能保留值。下面建立一個使用靜态變量的示例,該示例如代碼2.17所示。

代碼2.17  使用靜态變量

<?php

   function keepNum()

   {

         static $num =0;

         $num ++;

         echo "現在靜态變量的值是:".$num;

         echo "&lt;br/>";

   }

   $num = 10;

   echo "變量num的值是:".$num."<br/>";

   keepNum();

   keepNum();

?&gt;

執行代碼2.17,執行結果如下所示:

變量num的值是:10

現在靜态變量的值是:1

現在靜态變量的值是:2

由代碼2.17執行結果知,由于在函數中指明了變量為靜态變量,是以在執行函數時保留了前面的值。

2.3.3  變量的變量

建立一個變量,需要該變量指派,當然也可以引用指派,有時候也需要使用該變量的内容作為變量名,也就是說這個變量存放在另一個變量中。定義變量的變量隻需要在變量的前面再添加一個美元符号即可。下面建立一個示例,該示例代碼如下所示:

<?php

   $name = "Yound";

   $$name = " Tang";

   echo  $name.$$name;

?>

執行該端代碼,執行結果如下所示:

Yound Tang

由上面例子知,一個可變變量擷取了一個普通變量的值作為這個可變變量的變量名。就可以作為一個可變變量的變量了,這時,兩個變量都被定義了。