- PHP從入門到精通(第4版)(軟件開發(fā)視頻大講堂)
- 明日科技
- 2282字
- 2020-11-28 17:36:30
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ò)誤的可能。
- 程序員面試筆試寶典(第3版)
- Java應(yīng)用與實(shí)戰(zhàn)
- Apache Spark 2.x Machine Learning Cookbook
- 編寫高質(zhì)量代碼:改善Python程序的91個(gè)建議
- Access 2010數(shù)據(jù)庫(kù)基礎(chǔ)與應(yīng)用項(xiàng)目式教程(第3版)
- Expert Android Programming
- Flux Architecture
- Mastering Apache Spark 2.x(Second Edition)
- PhoneGap:Beginner's Guide(Third Edition)
- Kivy Cookbook
- Python機(jī)器學(xué)習(xí)算法與應(yīng)用
- Scala編程實(shí)戰(zhàn)
- Arduino電子設(shè)計(jì)實(shí)戰(zhàn)指南:零基礎(chǔ)篇
- Android Studio開發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到App上線 (移動(dòng)開發(fā)叢書)
- Java Hibernate Cookbook