PHP開發(fā)基礎(chǔ)教程之運(yùn)算符
一、算數(shù)運(yùn)算
算數(shù)運(yùn)算符,其實(shí)就是小學(xué)的加減乘除:
實(shí)例:
<?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)算符,即:把等號右邊的值,賦值給等號左邊的變量,左邊的變數(shù)就為右邊的值。
程式碼是從上到下運(yùn)行的,因此賦值就可以從上到下的反覆賦值:
實(shí)例:
<?php //給變量賦不同的值,觀察最后的輸出結(jié)果 $x = 5; $x = true; $x = '愛你'; $x = 12.888; echo $x; ?>
可以看出$x被反覆賦值,之後的賦值會覆寫前面賦的值。輸出的是最後一次的賦值。
PHP還有其他幾種擴(kuò)充的賦值,都是從賦值(=)演變來的
三、自加,自減運(yùn)算
自加自減,就是把自己加1,或減1。
來理解下上面這個表格
$x++和++$x的差別,實(shí)例:
<?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之間的差異
#四、比較運(yùn)算
##PHP的比較運(yùn)算子可以比較兩個數(shù)值,比較之後傳回的是布林值true 或false:
實(shí)例:
<?php $x=2; $y=4; var_dump($x>$y); echo "<br/>"; var_dump($x<$y); ?>上面幾個都是普通的,容易造成理解混亂有兩個==和===== 等於
##== = 全等於,也叫做判斷型別等於
我們來看一個例子:
實(shí)例
<?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
具體見下表
來看看範(fàn)例:
<?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)行邏輯比較
實(shí)例:
<?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); ?>
註:實(shí)例只列舉了一個,其他各位如果有興趣的話,可以自己嘗試輸出,看看結(jié)果和自己預(yù)想的一樣不
#七、運(yùn)算子優(yōu)先權(quán)
本章的學(xué)習(xí)等級為了解等級。
因?yàn)榻^大多數(shù)人都不會去記運(yùn)算子的優(yōu)先順序。
我們在小學(xué)的時候,優(yōu)先順序是先乘除後加減。想要改變運(yùn)算的優(yōu)先權(quán)加括號即可。
重點(diǎn):不用記優(yōu)先級,確定不了的時候號上括號把優(yōu)先級標(biāo)出來即可
註:各位如果有興趣的話,可以翻看PHP手冊,上面有詳細(xì)的優(yōu)先權(quán)描述
八、三元運(yùn)算子和其它運(yùn)算子
還有一些特殊的運(yùn)算子和符號,我們再來進(jìn)行講解?;蛟S以後我們需要用到
1.三元運(yùn)算子
相當(dāng)我們下一章要學(xué)習(xí)的if.. .else結(jié)構(gòu)。不過三元運(yùn)算子的寫法更簡潔,語法格式如下:
判斷$x是否為真? 為真執(zhí)行的程式碼片段(只能寫一句程式碼):為假執(zhí)行的程式碼片段(只能寫一句程式碼);
實(shí)例:
<?php $x = true; $x ? $y = 5 : $y = 6; //輸出5 echo $y; ?>
2.反引號
我們常常需要顯示IP位址,在PHP裡面可不可能顯示我們windows的IP位址呢?用反引號,就可以執(zhí)行我們的命令(不過有些虛擬伺服器是禁止執(zhí)行這些的命令腳本的):
源碼:
<?php echo '<pre>'; echo `ipconfig`; echo '</pre>'; ?>
輸出結(jié)果:
#3.@符號
單行抑制錯誤,以後的章節(jié)我們也會講解到實(shí)例,原始碼如下:<?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'); ?>沒有輸出,警告也沒有,可見@符號抑制了錯誤