1
2
3
4
5
6
7
8
9
10
11

PHP中的變量

發(fā)布時間:2017-07-20 07:56   發(fā)布人:毛書朋   浏覽次數:7865

PHP中的變量

PHP中的類型轉換

PHP中的變量的變量和引用變量

關聯課件:  4子項目四 -PHP中的變量(點擊在線預覽)


4.3.3  PHP中的變量

PHP中預先定義了很多變量,用戶可以随時在腳本中引用。PHP的預定義變量將(jiāng)在後(hòu)面(miàn)的章節進(jìn)行講解,下面(miàn)主要講解自定義變量。

4.3.3.1  變量定義與變量類型

在PHP中一個有效的變量名由字母或者下劃線開(kāi)頭,後(hòu)面(miàn)跟上任意數量的字母、數字或下劃線。PHP的變量屬于松散的數據類型,具體使用時應注意以下幾點。

(1) 變量名要以“$”開(kāi)頭,且區分大小寫。

(2) 變量不必要預先定義或聲明。

(3) 變量在使用時編譯器可動态進(jìn)行類型指定和轉換。

(4) 變量如果未賦值而直接使用,變量值將(jiāng)被視爲空。


提示

最好(hǎo)使用相同的變量命名風格,以免在團隊合作或自己查找錯誤的時候因變量大小的問題,浪費過(guò)多時間,那就得不償失了。變量之間可自由轉換類型,但浮點數轉成(chéng)整數就有點牽強了,可以將(jiāng)浮點數轉換成(chéng)字符串,這(zhè)是很好(hǎo)處理的。



PHP支持8種(zhǒng)原始變量類型,其中包含4種(zhǒng)标量類型、2種(zhǒng)複合類型、2種(zhǒng)特殊類型,如表4-1所示。

4-1.PNG

        下面(miàn),分别介紹這(zhè)8種(zhǒng)變量類型。

        1.布爾型(boolean)

        布爾型是最簡單的類型,也被稱爲邏輯型,其值非真即假,主要用在條件表達式和邏輯表達式中,用以控制程序流程。要指定一個布爾值,使用關鍵字TRUE或FALSE(兩(liǎng)個都(dōu)不區分大小寫)。其他類型的數據均可以轉換爲布爾型,詳見類型轉換。

        2.整型(integer)

        整型數的字長(cháng)和平台有關,最大值大約是二十億(32位有符号)。

        整型值可以用十進(jìn)制、十六進(jìn)制或八進(jìn)制符号指定,前面(miàn)可以加上可選的符号(-或者+)。要使用八進(jìn)位整數可以在面(miàn)加0(零),要使用16進(jìn)位整數可以在面(miàn)加0x。

        $int1=1234                       //十進(jìn)制正整數

        $int1=-1234        //負整數

        $int1=01234         //八進(jìn)制整數

        $int1=0x1234        //十六進(jìn)制整數

        3.浮點型(double (floating point number))

        在32位的操作系統中,它的有效範圍是1.7E-308~1.7E 308,如:

        $float1=666.66

        $float2=6.6666e2           //表示6.6666乘以10的2次方,爲指數形式的浮點數

        值得注意的是,浮點型變量顯示的十進(jìn)制數的位數由php.ini文件中的precision(精度)定義,預定值爲12,即浮點數最長(cháng)占14個字符。

        4.字符串(string)

        無論是單個字符還(hái)是很長(cháng)的字符串都(dōu)是使用這(zhè)個變量類型。值得注意的是要將(jiāng)指定字符串賦值給字符串變量時,要在頭尾都(dōu)加上雙引号或單引号(例如:"這(zhè)是字符串"或'這(zhè)是字符串')。在PHP中還(hái)提供一些轉義字符,用以表示那些已經(jīng)被程序語法結構占用了的特殊字符,如表4-2所示。

4-2.PNG

提示

有了PHP變量的理論知識,下面(miàn)來通過(guò)實例來看其具體使用。

<!--文件4-7.php:PHP變量的使用=>布爾型、整型、浮點型、字符串-->
<HTML>
<HEAD>
    <TITLE>PHP變量的使用之一</TITLE>
</HEAD>
<BODY>
    <?php
        $string1 = "輸出字符串變量類型的内容!";
        echo $string1; //輸出字符串變量“$string1”的内容
        echo "<br>"; //輸出換行

        $string2 = "輸出特殊字符:";
        echo $string2 . "";
        echo "$";
        echo ''';
        echo """;
        echo "x52";
        echo "<br>";
        $int1=01234;                // 八進(jìn)制整數
        $int2=0x1234;                // 十六進(jìn)制整數
        
        echo "輸出整型變量的值:";
        echo $int1;                // 輸出668
        echo "  ";                // 輸出一個制表位
        echo $int2;                // 輸出4660
        echo "<br>";

        $float1=6.6666e2;
        echo "輸出浮點型變量的值:";
        echo $float1;                // 輸出666.66
        echo "<br>";
        echo "輸出布爾型變量的值:";
        echo (boolean)($int1);            // 輸出轉換後(hòu)的布爾變量--“1”
    ?>
</BODY>
</HTML>

            程序4-7.php涉及到了變量類型中的字符串、整型、浮點型、布爾型變量的使用,其運行結果如圖4-7所示。

4-7.jpg

圖4-7  程序4-7.php的運行結果

            5.數組(array)

            數組變量可以是一維數組、二維數組或者更多維數組,其中的元素可以爲多種(zhǒng)類型,可以是字符串、整型、浮點型、布爾型,甚至是數組或對(duì)象等。

            在PHP中可以使用array()函數來創建數組,也可以直接進(jìn)行賦值。使用array()來創建數組的語法爲:

            array( [ key => ] value,

                 …

                )

            其中key可以是integer或者string,是以後(hòu)存取的标志。特别地,當爲integer時,沒(méi)有序号意義,value可以是任何值。

            用array()函數創建數組的方法如程序4-8.php所示。

<!--文件4-8.php:用array()函數創建PHP數組-->
<HTML>
<HEAD>
    <TITLE>用array()函數創建PHP數組</TITLE>
</HEAD>
<BODY>
    <?php
        $arr=array
        (
            0=>6,
            2=>6.666e2,
            1=>"我愛PHP",
            "str"=>"string",
        );
        for ($i=0;$i<count($arr);$i  )
        {
            $print=each($arr);
            echo "$print[value]<br>";
        }
    ?>
</BODY>
</HTML>

            程序中使用for循環用來輸出整個數組。其中函數count()用來計算出數組元素的個數,函數each()返回當前數組指針的索引/值對(duì),在後(hòu)面(miàn)的章節還(hái)將(jiāng)會講到。程序4-8.php的運行結果如圖4-8所示。

4-8.jpg

         圖4-8  程序4-8.php的運行結果

            我們也可以采用將(jiāng)給一個一個數組元素賦值的方法,如程序4-9.php所示。

<!--文件4-9.php:逐一給數組元素賦值-->
<HTML>
<HEAD>
    <TITLE>逐一給數組元素賦值</TITLE>
</HEAD>
<BODY>
    <?php
        $arr[0]=6;
        $arr[2]=6.666e2;
        $arr[1]="我愛PHP";
        $arr["str"]="string";
        for ($i=0;$i<count($arr);$i  )
        {
            $print=each($arr);
            echo "$print[value]<br>";
        }
    ?>
</BODY>
</HTML>

            使用上面(miàn)這(zhè)種(zhǒng)簡潔方式給數組賦值時,數組的默認下标爲0、1、2、3。程序4-10的運行結果與程序4-8.php的運行結果相同。

            PHP中多維數組與一維數組的區别在于多維數組有兩(liǎng)個或多個下标,其用法基是一樣的。程序4-11就是采用逐一給二維數組元素賦值的方法來創建和使用二維數組的。

<!--文件4-11.php:多維數組的逐一賦值法-->
<HTML>
<HEAD>
    <TITLE>多維數組的逐一賦值</TITLE>
</HEAD>
<BODY>
    <?php
        $arr[0][0]=6;
        $arr[0][1]=6.666e2;
        $arr[1][0]= "我愛PHP";
        $arr[1]["str"]="string";
        for ($i =0;$i<count($arr);$i  )
        {
            for ($j = 0;$j<count($arr[$i]);$j  )
            {
                $print=each($arr[$i]);
                echo "$print[value]<br>";
            }
        }
    ?>
</BODY>
</HTML>

            其運行結果與程序4-8.php運行結果相同。

            還(hái)可以使用層次更明顯、更容易理解和接受的多維數組賦值方式:嵌套的array()函數方式來創建PHP數組并給數組元素賦值,如程序4-12所示。

<!--文件4-12.php:用嵌套的array()函數創建PHP數組-->
<HTML>
<HEAD>
    <TITLE>用嵌套array()函數創建PHP數組</TITLE>
</HEAD>
<BODY>
    <?php
    $arr=array
    (
        0=>array
        (
            0=>6,
            2=>6.666e2,
),                 //此處應該是“,”,而不是“;”
        1=>array
        (
            0=>"我愛PHP",
            "str"=>"string"
        )
    );
    for ($i =0;$i<count($arr);$i  )
    {
        for ($j = 0;$j<count($arr[$i]);$j  )
        {
            $print=each($arr[$i]);
            echo "$print[value]<br>";
        }
    }
    ?>
</BODY>
</HTML>

            其運行結果與程序4-8.php運行結果相同。

            6.對(duì)象(object)

            object爲對(duì)象類型變量,是類的具體化實例,第4章會對(duì)其進(jìn)行詳細講解。

            7.資源(resource)

            資源是一種(zhǒng)特殊變量,其中保存了到外部資源的一個引用。資源是通過(guò)專門的函數來建立和使用的。資源類型變量保存了打開(kāi)文件、數據庫連接、圖形畫布區域等的特殊句柄,在後(hòu)面(miàn)的章節中會陸續學(xué)習到。

            8.NULL

            NULL類型隻有一個值,就是大小寫敏感的關鍵字NULL,表示一個變量沒(méi)有值。

            在下列情況下一個變量的值被認爲是NULL。

            (1)被賦值爲NULL。

            (2)尚未被賦值。

            (3)被unset()(銷毀指定的變量)。

            
提示





       4.3.3.2  變量類型轉換

            前面(miàn)已經(jīng)提到過(guò),PHP的變量屬于松散的數據類型,也就是說PHP在變量定義時不需要(或不支持)類       型定義,變量的類型是根據使用該變量的上下文所決定的。如果把一個字符串值賦給變量var,var就成(chéng)了一       個字符串;如果又把一個整型值賦給var,那它就成(chéng)了一個整數。

            在PHP中是怎樣處理變量不同類型間的相互轉換的呢?PHP提供了兩(liǎng)種(zhǒng)類型轉換的方法:自動類型轉換      和強制類型轉換。

            PHP的自動類型轉換的一個例子是加号“ ”。如果任何一個運算數是浮點數,則所有的運算數都(dōu)被當成(chéng)     浮點數,結果也是浮點數。否則運算數會被解釋爲整數,結果也是整數。注意這(zhè)并沒(méi)有改變這(zhè)些運算數本身       的類型;改變的僅是這(zhè)些運算數如何被求值。也就是說,自動類型轉換并不能(néng)改變變量本身的數據類型,改       變的僅僅是變量作爲運算數時被求值得方式。

            PHP中的類型強制轉換和C中的強制類型轉換相似:在要轉換的變量之前加上用括号括起(qǐ)來的目标類型。     允許的強制轉換如下。

            (int)或(integer):轉換成(chéng)整型。

            (bool)或(boolean):轉換成(chéng)布爾型。

            (float)、(double)或(real):轉換成(chéng)浮點型。

            (string):轉換成(chéng)字符串。

            (array):轉換成(chéng)數組。

            (object):轉換成(chéng)對(duì)象。

            其使用方法爲:

            (int)$變量名或(integer)$變量名

            爲了便于理解,現舉例如下。

<!--文件4-13.php:變量類型轉換-->
<HTML>
<HEAD>
    <TITLE>變量類型轉換</TITLE>
</HEAD>
<BODY>
    <?php
    $var1 = "0";                 //$var1是一個字符串
    echo $var1."<br>";

    $var2 =$var1   2;            //$var2是一個整數
    echo $var2."<br>";

    $var3 = $var2   1.3;         //$var3是一個浮點數
    echo $var3."<br>";

    $var4 = 5   "10 PHP 5.2";    //整數與字符串相加結果爲正數
    echo $var4."<br>";

    $var5 = 5   "PHP 5.2";        //整數與字符串相加結果爲正數
    echo $var5."<br>";

    $var6 = (bool)-2;    
    //-1和其他非零值(不論正負)轉換成(chéng)布爾型,都(dōu)被認爲是TRUE!
    echo $var6."<br>";

    $var7 = 10/3;
    echo $var7."<br>";

    $var8 = (int)$var7;          //強制轉換爲整數
    echo $var8."<br>";

    $var9=1.3e5;
    $var10 = (float)$var9;   //強制轉換爲浮點數
    echo $var10."<br>";
    
    $var11 = (string)$var3;
    echo "$var11的類型爲:".gettype($var11)."<br>";
    //gettype()爲獲取變量類型的函數
    ?>
</BODY>
</HTML>

            程序4-13.php運行結果如圖4-9所示。

4-9.jpg

圖4-9  程序4-13.php的運行結果

            4-13.php中僅舉例說明了部分類型轉換,轉換爲布爾值時需要注意以下幾點。

            當轉換爲boolean時,以下值被認爲是FALSE。

            (1)布爾值FALSE。

            (2)整型值0(零)。

            (3)浮點型值0.0(零)。

            (4)空白字符串和字符串"0"。

            (5)沒(méi)有成(chéng)員變量的數組。

            (6)沒(méi)有單元的對(duì)象(僅适用于PHP 4)。

            (7)特殊類型NULL(包括尚未設定的變量)。

            所有其他值都(dōu)被認爲是TRUE(包括任何資源)。值得注意的是,-1和其他非零值(不論正負)一樣,       被認爲是TRUE!在求表達式的值和條件判斷時一定要注意!

         4.3.3.3 “變量的變量”

            “變量的變量”是指在變量的名稱中含有其他變量的一類變量。其實“變量的變量”這(zhè)個名稱并不太準        确,有的地方也稱爲可變變量或動态變量。也就是說,通過(guò)“變量的變量”可以實現動态地設置和使用一個      變量的變量名。通過(guò)程序4-14.php就很容易理解它的使用方法。

<!--文件4-14.php:變量的變量-->
<HTML>
<HEAD>
    <TITLE>變量的變量</TITLE>
</HEAD>
<BODY>
    <?php
        $var = 'hello';
        $$var = ' world!';           // 定義變量的變量
        echo $var.${$var}."<br>";    // 輸出變量的變量
        echo $var.$hello;            // 輸出變量的變量
    ?>
</BODY>
</HTML>

            程序4-14.php的運行結果如圖4-10所示。

4-10.jpg


圖4-10  程序4-14.php的運行結果

            從程序中不難發(fā)現定義變量的方法,如第9行所示輸出或使用變量的變量的方法有兩(liǎng)種(zhǒng),如第10行和11       行,而且這(zhè)兩(liǎng)方法的效果是一樣的。

                    

提示





      4.3.3.4  引用變量

            PHP中支持引用變量,這(zhè)是從C  語言中借用而來的。對(duì)一個變量進(jìn)行引用産生新變量後(hòu),新變量可以       看作是原變量的一個别名,改變其中任何一個的值,兩(liǎng)個變量的值都(dōu)會發(fā)生改變。使用引用變量的方法是賦       值時在右邊變量前加“&”符号,如程序4-15.pnp所示。

<!--文件4-15.php:引用變量-->
<HTML>
<HEAD>
    <TITLE>引用變量</TITLE>
</HEAD>
<BODY>
    <?php
        $int1=8;
        $int2=&$int1;
        $int2   ;
        echo $int1;
    ?>
</BODY>
</HTML>

            程序4-15.php的運行效果如圖4-11所示。

4-11.jpg

圖4-11  程序4-15.php的運行結果

            引用變量在進(jìn)行賦值時,系統讓新變量和原變量共用一個地址,并沒(méi)有變量複制的操作,所以速度非常        快。如果參數是大數組或對(duì)象,使用引用變量進(jìn)行參數傳遞能(néng)節省内存并加快程序運行速度。不過(guò)其副作用      就是引用值改變,原變量也會發(fā)生改變,因此是否能(néng)使用引用變量進(jìn)行參數傳遞要視具體情況而定。



  • 趙博文 2018-01-07 15:57:31
    1.變量特點: 在定義後(hòu)後(hòu)還(hái)可以多次賦值 定義在那個範圍就在那個範圍有效,如函數中定義的變量就隻在函數中有效。 可以通過(guò)unset()銷毀 2.常量特點 常量前面(miàn)面(miàn)沒(méi)有$符号 常量隻能(néng)通過(guò)define()函數定義或者是const關鍵字定義(const定義常量,是在php5.3版本後(hòu)),如 define('PI',3.14)或者const PI=3.14 且值隻能(néng)是标量,即可以是 整型 浮點型 布爾型 null 字符串等。在定義後(hòu),無論在那定義,都(dōu)可以直接調用,沒(méi)有作用域。定義後(hòu)不可以再賦值一直存在内存中,不能(néng)被銷毀。常量的值 不能(néng)是 數組 對(duì)象 資源,可以通過(guò) bool defined() 函數判斷某個常量是否已經(jīng)被定義了。
  • 劉鑫蕊 2018-01-09 16:12:38
    老師講的很詳細,從中學(xué)到了很多。
  • 嶽猛 2018-01-09 16:17:48
    對(duì)于PHP變量有了一個基本的了解
  • 魏德旺 2018-01-09 16:23:52
    還(hái)可以這(zhè)麼(me)玩
  • 甄丹丹 2018-01-09 16:29:19
    這(zhè)些語法基礎對(duì)于剛學(xué)習PHP的人來說是非常重要的,條理清晰,方便學(xué)習
  • 李文傑 2018-01-09 17:59:47
    6666
  • 李倩文 2018-01-10 11:58:08
    引用變量在進(jìn)行賦值時,系統讓新變量和原變量共用一個地址,并沒(méi)有變量複制的操作,所以速度非常 快。如果參數是大數組或對(duì)象,使用引用變量進(jìn)行參數傳遞能(néng)節省内存并加快程序運行速度。不過(guò)其副作用 就是引用值改變,原變量也會發(fā)生改變,因此是否能(néng)使用引用變量進(jìn)行參數傳遞要視具體情況而定。