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

3.6 PHP運(yùn)算符

運(yùn)算符是用來(lái)對(duì)變量、常量或數(shù)據(jù)進(jìn)行計(jì)算的符號(hào),它對(duì)一個(gè)值或一組值執(zhí)行一個(gè)指定的操作。PHP的運(yùn)算符主要包括算術(shù)運(yùn)算符、字符串運(yùn)算符、賦值運(yùn)算符、位運(yùn)算符、邏輯運(yùn)算符、比較運(yùn)算符、遞增或遞減運(yùn)算符和條件運(yùn)算符,這里只介紹一些常用的運(yùn)算符。

3.6.1 算術(shù)運(yùn)算符

視頻講解:光盤\TM\lx\3\13 算術(shù)運(yùn)算符.mp4

算術(shù)運(yùn)算(Arithmetic Operators)符是處理四則運(yùn)算的符號(hào),在數(shù)字的處理中應(yīng)用得最多。常用的算術(shù)運(yùn)算符如表3.11所示。

表3.11 常用的算術(shù)運(yùn)算符

說明

在算術(shù)運(yùn)算符中使用%求余,如果被除數(shù)($a)是負(fù)數(shù),那么取得的結(jié)果也是一個(gè)負(fù)值。

【例3.17】本例分別使用上述幾種算術(shù)運(yùn)算符進(jìn)行運(yùn)算,實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\17)

        <?php
            $a=-100;                            //聲明變量$a
            $b=50;                              //聲明變量$b
            $c=30;                              //聲明變量$c
            echo"\$a=".$a.", ";                 //輸出變量$a
            echo"\$b=".$b.", ";                 //輸出變量$b
            echo"\$c=".$c."<p>";                //輸出變量$c
            echo"\$a+\$b=".($a+$b)."<br>";      //計(jì)算變量$a加$b的值
            echo"\$a-\$b=".($a-$b)."<br>";      //計(jì)算變量$a減$b的值
            echo"\$a*\$b=".($a*$b)."<br>";    //計(jì)算$a乘$b的值
            echo"\$a/\$b=".($a/$b)."<br>";      //計(jì)算$a除以$b的值
            echo"\$a %\$c=".($a %$c)."<br>";    //計(jì)算$a和$b的余數(shù),被除數(shù)為-100
        ?>

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

圖3.11 算術(shù)運(yùn)算符的簡(jiǎn)單應(yīng)用

3.6.2 字符串運(yùn)算符

視頻講解:光盤\TM\lx\3\14 字符串運(yùn)算符.mp4

字符串運(yùn)算符只有一個(gè),即英文的句號(hào)“.”,它將兩個(gè)字符串連接起來(lái),結(jié)合成一個(gè)新的字符串。使用過C或Java語(yǔ)言的讀者應(yīng)注意,這里的“+”只用作賦值運(yùn)算符,而不能用作字符串運(yùn)算符。

【例3.18】本例用于對(duì)比“.”和“+”兩者之間的區(qū)別。當(dāng)使用“.”時(shí),變量$m和$n兩個(gè)字符串組成一個(gè)新的字符串3.1415926r*r1;當(dāng)使用“+”時(shí),PHP會(huì)認(rèn)為這是一次運(yùn)算。如果“+”的兩邊有字符類型,則自動(dòng)轉(zhuǎn)換為整型;如果是字母,則輸出為0;如果是以數(shù)字開頭的字符串,則會(huì)截取字串頭部的數(shù)字,再進(jìn)行運(yùn)算。實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\18)

        <?php
            $n="3.1415926r*r";         //聲明一個(gè)字符串變量,以數(shù)字開頭
            $m=1;                       //聲明一個(gè)整型變量
            $nm=$n.$m;                  //使用“.”運(yùn)算符將兩個(gè)變量連接
            echo $nm."<br>";
            $mn=$n+$m;                  //使用“+”運(yùn)算符將兩個(gè)變量連接
            echo $mn . "<br>" ;
        ?>

結(jié)果為:3.1415926r*r1

4.1415926

3.6.3 賦值運(yùn)算符

視頻講解:光盤\TM\lx\3\15 賦值運(yùn)算符.mp4

賦值運(yùn)算符是把基本賦值運(yùn)算符“=”右邊的值賦給左邊的變量或者常量。在PHP中的賦值運(yùn)算符如表3.12所示。

表3.12 常用賦值運(yùn)算符

3.6.4 遞增或遞減運(yùn)算符

視頻講解:光盤\TM\lx\3\16 遞增或遞減運(yùn)算符.mp4

算術(shù)運(yùn)算符適合在有兩個(gè)或者兩個(gè)以上不同操作數(shù)的場(chǎng)合使用,但是,當(dāng)只有一個(gè)操作數(shù)時(shí),使用算術(shù)運(yùn)算符是沒有必要的。這時(shí),就可以使用遞增運(yùn)算符“++”或者遞減運(yùn)算符“--”。

遞增或遞減運(yùn)算符有兩種使用方法,一種是將運(yùn)算符放在變量前面,即先將變量作加1或減1的運(yùn)算后再將值賦給原變量,叫作前置遞增或遞減運(yùn)算符;另一種是將運(yùn)算符放在變量后面,即先返回變量的當(dāng)前值,然后變量的當(dāng)前值作加1或減1的運(yùn)算,叫作后置遞增或遞減運(yùn)算符。

【例3.19】定義兩個(gè)變量,將這兩個(gè)變量分別利用遞增和遞減運(yùn)算符進(jìn)行操作,并輸出結(jié)果。實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\19)

        <?php
            $a = 6;
            $b = 9;
            echo "\$a = $a , \$b = $b<p>";
            echo"\$a++=  ". $a++."<br>";       //先返回$a的當(dāng)前值,然后$a的當(dāng)前值加1
            echo "運(yùn)算后\$a的值: ".$a."<p>" ;
            echo"++\$b=". ++$b."<br>";         //$b的當(dāng)前值先加1,然后返回新值
            echo "運(yùn)算后\$b的值: ".$b ;
            echo "<hr><p>";
            echo"\$a--=". $a--."<br>";         //先返回$n的當(dāng)前值,然后$n的當(dāng)前值減1
            echo "運(yùn)算后\$a的值: ".$a."<p>" ;
            echo"\$b=". --$b."<br>";           //$n的當(dāng)前值先減1,然后返回新值
            echo "運(yùn)算后\$b的值: ".$b;
        ?>

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

圖3.12 遞增和遞減運(yùn)算符

3.6.5 位運(yùn)算符

視頻講解:光盤\TM\lx\3\17 位運(yùn)算符.mp4

位邏輯運(yùn)算符是指對(duì)二進(jìn)制位從低位到高位對(duì)齊后進(jìn)行運(yùn)算。在PHP中的位運(yùn)算符如表3.13所示。

表3.13 位運(yùn)算符

【例3.20】下面使用位運(yùn)算符對(duì)變量中的值進(jìn)行位運(yùn)算操作。實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\20)

        <?php
          $m = 8 ;
          $n = 12 ;
          $mn=$m&$n;             //位與
          echo $mn ." ";
          $mn=$m|$n;             //位或
          echo $mn ." ";
          $mn=$m^$n;             //位異或
          echo $mn ." ";
          $mn=~$m;              //位取反
          echo $mn ." ";
        ?>

結(jié)果為:8 12 4 -9

3.6.6 邏輯運(yùn)算符

視頻講解:光盤\TM\lx\3\18 邏輯運(yùn)算符.mp4

邏輯運(yùn)算符用來(lái)組合邏輯運(yùn)算的結(jié)果,是程序設(shè)計(jì)中一組非常重要的運(yùn)算符。PHP的邏輯運(yùn)算符如表3.14所示。

表3.14 PHP的邏輯運(yùn)算符

在邏輯運(yùn)算符中,邏輯與和邏輯或這兩個(gè)運(yùn)算符有4種運(yùn)算符號(hào)(&&、and、||和or),其中屬于同一個(gè)邏輯結(jié)構(gòu)的兩個(gè)運(yùn)算符號(hào)(例如&&和and)之間卻有著不同的優(yōu)先級(jí)。

【例3.21】本例分別使用邏輯或中的運(yùn)算符號(hào)||和or進(jìn)行相同的判斷,因?yàn)橥贿壿嫿Y(jié)構(gòu)的兩個(gè)運(yùn)算符||和or的優(yōu)先級(jí)不同,輸出的結(jié)果也不同。實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\21)

        <?php
            $i=true;                  //聲明一個(gè)布爾型變量$i,賦值為真
            $j=true;                  //聲明一個(gè)布爾型變量$j,賦值也為真
            $z=false;                 //聲明一個(gè)初值為假的布爾變量$z
            if($i or$j and$z)         //用or進(jìn)行判斷
                echo"true";           //如果if表達(dá)式為真,輸出true
            else
                echo"false";          //否則輸出false
            echo "<br>";
            if($i||$j and$z)          //用||進(jìn)行判斷
                echo"true";           //如果表達(dá)式為真,輸出true
            else
                echo"false";          //如果表達(dá)式為假,輸出false
        ?>

結(jié)果為:true

false

注意

可以看到,兩個(gè)if語(yǔ)句除了or和||不同之外,其他完全一樣,但最后的結(jié)果卻正好相反。在實(shí)際應(yīng)用中要多注意一下這樣的細(xì)節(jié)。

3.6.7 比較運(yùn)算符

視頻講解:光盤\TM\lx\3\19 比較運(yùn)算符.mp4

比較運(yùn)算符就是對(duì)變量或表達(dá)式的結(jié)果進(jìn)行大小、真假等比較,如果比較結(jié)果為真,則返回true,如果為假,則返回false。PHP中的比較運(yùn)算符如表3.15所示。

表3.15 PHP的比較運(yùn)算符

其中,不太常見的是===和!==。$a === $b,說明$a和$b不只是數(shù)值上相等,而且兩者的類型也一樣。! ==和===的意義相近,$a ! = = $b就是說$a和$b或者數(shù)值不等,或者類型不等。

【例3.22】本例使用比較運(yùn)算符對(duì)變量中的值進(jìn)行比較,設(shè)置變量$value="100",變量的類型為字符串型,將變量$value與數(shù)字100進(jìn)行比較,會(huì)發(fā)現(xiàn)比較的結(jié)果非常有趣。其中使用的var_dump()函數(shù)是系統(tǒng)函數(shù),作用是輸出變量的相關(guān)信息。實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\22)

        <?php
          $value="100";                 //聲明一個(gè)字符串變量$value
          echo "\$value = \"$value\"";
          echo "<p>\$value==100: ";
          var_dump($value==100);        //結(jié)果為:bool(true)
          echo "<p>\$value==ture: ";
          var_dump($value==true);       //結(jié)果為:bool(true)
          echo "<p>\$value! =null: ";
          var_dump($value! =null);      //結(jié)果為:bool(true)
          echo "<p>\$value==false: ";
          var_dump($value==false);      //結(jié)果為:bool(false)
          echo "<p>\$value === 100: ";
          var_dump($value===100);       //結(jié)果為:bool(false)
          echo "<p>\$value===true: ";
          var_dump($value===true);      //結(jié)果為:bool(true)
          echo "<p>(10/2.0 ! == 5): ";
          var_dump(10/2.0! ==5);        //結(jié)果為:bool(true)
        ?>

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

圖3.13 比較運(yùn)算符的應(yīng)用

3.6.8 條件運(yùn)算符

視頻講解:光盤\TM\lx\3\20 條件運(yùn)算符.mp4

條件運(yùn)算符(? :),也稱為三目運(yùn)算符,用于根據(jù)一個(gè)表達(dá)式在另外兩個(gè)表達(dá)式中選擇一個(gè),而不是用來(lái)在兩個(gè)語(yǔ)句或者程序中選擇。條件運(yùn)算符最好放在括號(hào)里使用。

【例3.23】下面應(yīng)用條件運(yùn)算符實(shí)現(xiàn)一個(gè)簡(jiǎn)單的判斷功能,如果正確則輸出“條件運(yùn)算”,否則輸出“沒有該值”。實(shí)例代碼如下:(實(shí)例位置:光盤\TM\sl\3\23)

        <?php
          $value=100;                                     //聲明一個(gè)整型變量
          echo($value==true)? "條件運(yùn)算": "沒有該值";     //對(duì)整型變量進(jìn)行判斷
        ?>

結(jié)果為:條件運(yùn)算

3.6.9 運(yùn)算符的優(yōu)先級(jí)

視頻講解:光盤\TM\lx\3\21 運(yùn)算符的優(yōu)先級(jí).mp4

所謂運(yùn)算符的優(yōu)先級(jí),是指在應(yīng)用中哪一個(gè)運(yùn)算符先計(jì)算,哪一個(gè)后計(jì)算,與數(shù)學(xué)的四則運(yùn)算遵循的“先乘除,后加減”是一個(gè)道理。

PHP的運(yùn)算符在運(yùn)算中遵循的規(guī)則是:優(yōu)先級(jí)高的運(yùn)算先執(zhí)行,優(yōu)先級(jí)低的操作后執(zhí)行,同一優(yōu)先級(jí)的操作按照從左到右的順序執(zhí)行。也可以像四則運(yùn)算那樣使用小括號(hào),括號(hào)內(nèi)的運(yùn)算最先執(zhí)行。表3.16從高到低列出了運(yùn)算符的優(yōu)先級(jí)。同一行中的運(yùn)算符具有相同優(yōu)先級(jí),此時(shí)它們的結(jié)合方向決定求值順序。

表3.16 運(yùn)算符的優(yōu)先級(jí)

這么多的級(jí)別,如果想都記住是不太現(xiàn)實(shí)的,也沒有必要。如果寫的表達(dá)式真的很復(fù)雜,而且包含了較多的運(yùn)算符,不妨多使用括號(hào),例如:

        <?php
            $a and (($b ! = $c) or (5 * (50- $d)))
        ?>

這樣就會(huì)減少出現(xiàn)邏輯錯(cuò)誤的可能。

主站蜘蛛池模板: 嫩江县| 兴国县| 长阳| 南澳县| 九龙县| 济源市| 临沂市| 南康市| 宁化县| 朝阳市| 临城县| 察隅县| 罗江县| 怀集县| 玉山县| 盐津县| 饶平县| 高台县| 衡东县| 河东区| 平江县| 沁水县| 潜江市| 广平县| 天等县| 乐东| 星子县| 乌鲁木齐县| 安顺市| 绥中县| 昌江| 大庆市| 聊城市| 独山县| 中江县| 江永县| 岐山县| 宝兴县| 双牌县| 黎川县| 石家庄市|