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