PHP開發(fā)基礎(chǔ)教程之運(yùn)算符
一、算數(shù)運(yùn)算
算數(shù)運(yùn)算符,其實就是小學(xué)的加減乘除:
實例:
<?php //聲明變量 $x = 16; $y = 5; //加 echo $x+$y; echo "<br/>"; //減 echo $x-$y; echo "<br/>"; //乘 echo $x*$y; echo "<br/>"; //除 echo $x/$y; echo "<br/>"; //取余 echo $x%$y; echo "<br/>"; //綜合運(yùn)算 echo ($x+$y)*$x; echo "<br/>"; ?>
注:與我們數(shù)學(xué)所學(xué)一樣,也有優(yōu)先級:先乘除,后加減。如果你想更明確的改變優(yōu)先級,那就用()【小括號】,將想要優(yōu)先的值給括起來
二、賦值運(yùn)算
在數(shù)學(xué)里面把 = (一個等號)叫作賦值運(yùn)算符,即:把等號右邊的值,賦值給等號左邊的變量,左邊的變量就為右邊的值。
代碼是從上到下運(yùn)行的,因此賦值就可以從上至下的反復(fù)賦值:
實例:
<?php //給變量賦不同的值,觀察最后的輸出結(jié)果 $x = 5; $x = true; $x = '愛你'; $x = 12.888; echo $x; ?>
可以看出$x被反復(fù)賦值,之后的賦值會覆蓋前面賦的值。輸出的是最后一次的賦值。
PHP還有其他幾種擴(kuò)展的賦值,都是從賦值(=)演變來的
三、自加,自減運(yùn)算
自加自減,就是把自己加1,或者減1。
來理解下上面這個表
$x++和++$x的區(qū)別,實例:
<?php $x = 5; $y = 5; //先賦值后加:即先將$x的值賦值給$z。$x的值為5,所以將$x的值賦值給$z,$z也為5 //之后$x再自己加一 $z = $x++; //先將$y自加1,$y等于5,自加1后結(jié)果為6。因此,$y的結(jié)果為6 //自加后,再將結(jié)果6偷偷的賦值給自己$w $w = ++$y; echo 'x的值為'.$x; echo "<br/>"; echo 'y的值為'.$y; echo "<br/>"; echo 'z的值為'.$z; echo "<br/>"; echo 'w的值為'.$w; echo "<br/>"; ?>
注:大家可以動手試試$x--和--$x之間的區(qū)別
四、比較運(yùn)算
PHP的比較運(yùn)算符可以比較兩個數(shù)值,比較之后返回的是布爾值true 或者 false:
來看看例子
實例:
<?php $x=2; $y=4; var_dump($x>$y); echo "<br/>"; var_dump($x<$y); ?>
上面幾個都是普通的,容易造成理解混亂有兩個==和===
== 等于
=== 全等于,也叫做判斷類型等于
我們來看一個例子:
實例
<?php $x=3; $y="3"; var_dump($x==$y); echo "<br/>"; var_dump($x===$y); ?>
從上面的例子可以看出==比較的是左右兩個數(shù)字的值是不是相等,===更為嚴(yán)格點(diǎn),不僅比較值是否相等,還比較了類型是否相等。
注:!=(不等于)和!==(全不等)也是同理,大家可以嘗試輸出看看
五、邏輯運(yùn)算
邏輯運(yùn)算符比較簡單,是我們?nèi)祟愡M(jìn)行邏輯思考時的一種方式
假設(shè)$x為條件一,$y為條件二
?邏輯與:中文解釋為并且,即當(dāng)$x并且$y都為真(true)時,返回真(true)其余情況都返回假(false)
?邏輯或:中文解釋為或者。即當(dāng),$x或者$y其中一個為真(true)的時候,返回真(true),兩個都為假(false)時,返回假(false)
?邏輯非:中文解釋取反。如果$x的執(zhí)為假(false),進(jìn)行一次非操作。非假(false)就為真了,就可以返回真(true)。反推true,則返回假(false)了。
?邏輯異或:如果$x和$y相同則為false,不相同則為true
具體見下表
來看看例子:
<?php $x=1; $y=0; var_dump($x&&$y); echo "<br/>"; var_dump($x||$y); echo "<br/>"; var_dump(!$x); echo "<br/>"; var_dump($x xor $y); echo "<br/>"; ?>
六、位運(yùn)算
位運(yùn)算符即按照二進(jìn)制的為諸位進(jìn)行邏輯比較
實例:
<?php //$x二進(jìn)制值為:0101 $x = 5; //$y二進(jìn)制值為:1000 $y = 8; //0101與1000諸位進(jìn)行與運(yùn)算,兩個都是1個則為1,其他都為0 // 0101 // 1000 //———————————— //結(jié)果 0000 var_dump($x & $y); ?>
注:實例只列舉了一個,其他各位如果有興趣的話,可以自己嘗試輸出,看看結(jié)果和自己預(yù)想的一樣不
七、運(yùn)算符優(yōu)先級
本章的學(xué)習(xí)級別為了解級別。
因為絕大多數(shù)人都不會去記運(yùn)算符的優(yōu)先級。
我們在小學(xué)的時候,優(yōu)先級是先乘除后加減。想要改變運(yùn)算的優(yōu)先級加括號即可。
重點(diǎn):不用記優(yōu)先級,確定不了的時候號上括號把優(yōu)先級標(biāo)出來即可
注:各位如果有興趣的話,可以翻看PHP手冊,上面有詳細(xì)的優(yōu)先級描述
八、三元運(yùn)算符和其它運(yùn)算符
還有一些特殊的運(yùn)算符和符號,我們再來進(jìn)行講解??赡芤院笪覀冃枰玫?/p>
1.三元運(yùn)算符
相當(dāng)我們下一章要學(xué)習(xí)的if...else結(jié)構(gòu)。不過三元運(yùn)算符的寫法更加簡潔,語法格式如下:
判斷$x是否為真? 為真執(zhí)行的代碼段(只能寫一句代碼):為假執(zhí)行的代碼段(只能寫一句代碼);
實例:
<?php $x = true; $x ? $y = 5 : $y = 6; //輸出5 echo $y; ?>
2.反引號
我們經(jīng)常需要顯示IP地址,在PHP里面可不可能顯示我們windows的IP地址呢?用反引號,就可以執(zhí)行我們的命令(不過有些虛擬服務(wù)器是禁止執(zhí)行這些的命令腳本的):
源碼:
<?php echo '<pre>'; echo `ipconfig`; echo '</pre>'; ?>
輸出結(jié)果:
注:反引號在鍵盤左上角,Tab鍵的上方
3.@符號
單行抑制錯誤,以后的章節(jié)我們還會講解到
實例,源碼如下:
<?php //打開一個不存在的文件adfsafasdfasfasdfdsadf.txt,你運(yùn)行一下會發(fā)現(xiàn)報錯了。 //再前面再加上一個@符看看效果 $fp = fopen('adfsafasdfasfasdfdsadf.txt','r'); //fp = fopen('adfsafasdfasfasdfdsadf.txt','r'); ?>
輸出:
加上@之后
<?php //打開一個不存在的文件adfsafasdfasfasdfdsadf.txt,你運(yùn)行一下會發(fā)現(xiàn)報錯了。 //再前面再加上一個@符看看效果 //$fp = fopen('adfsafasdfasfasdfdsadf.txt','r'); @$fp = fopen('adfsafasdfasfasdfdsadf.txt','r'); ?>
沒有輸出,警告也沒有,可見@符號抑制了錯誤