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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM