PHP開發基礎教程之運算符
一、算數運算
算數運算符,其實就是小學的加減乘除:
實例:
<?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/>"; //综合运算 echo ($x+$y)*$x; echo "<br/>"; ?>
註:與我們數學所學一樣,也有優先順序:先乘除,後加減。如果你想更明確的改變優先級,那就用()【小括號】,將想要優先的值給括起來
#二、賦值運算
在數學裡面把= (一個等號)叫作賦值運算符,即:把等號右邊的值,賦值給等號左邊的變量,左邊的變數就為右邊的值。
程式碼是從上到下運行的,因此賦值就可以從上到下的反覆賦值:
實例:
<?php //给变量赋不同的值,观察最后的输出结果 $x = 5; $x = true; $x = '爱你'; $x = 12.888; echo $x; ?>
可以看出$x被反覆賦值,之後的賦值會覆寫前面賦的值。輸出的是最後一次的賦值。
PHP還有其他幾種擴充的賦值,都是從賦值(=)演變來的
三、自加,自減運算
自加自減,就是把自己加1,或減1。
來理解下上面這個表格
$x++和++$x的差別,實例:
<?php $x = 5; $y = 5; //先赋值后加:即先将$x的值赋值给$z。$x的值为5,所以将$x的值赋值给$z,$z也为5 //之后$x再自己加一 $z = $x++; //先将$y自加1,$y等于5,自加1后结果为6。因此,$y的结果为6 //自加后,再将结果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之間的差異
#四、比較運算
##PHP的比較運算子可以比較兩個數值,比較之後傳回的是布林值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); ?>
從上面的例子可以看出==比較的是左右兩個數字的值是不是相等,===更為嚴格點,不僅比較值是否相等,還比較了型別是否相等。
註:! =(不等於)和! ==(全不等)也是同理,大家可以嘗試輸出看看
五、邏輯運算
邏輯運算子比較簡單,是我們人類進行邏輯思考時的一種方式
假設$x為條件一,$y為條件二
邏輯與:中文解釋為並且,即當$ x且$y都為真(true)時,返回真(true)其餘情況都會回傳假(false)
邏輯或:中文解釋為或。即當,$x或$y其中一個為真(true)的時候,返回真(true),兩個都為假(false)時,返回假(false)
邏輯非:中文解釋取反。如果$x的執為假(false),進行一次非操作。非假(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/>"; ?>
#六、位元運算
位元運算子即依照二進位的為諸位進行邏輯比較
實例:
<?php //$x二进制值为:0101 $x = 5; //$y二进制值为:1000 $y = 8; //0101与1000诸位进行与运算,两个都是1个则为1,其他都为0 // 0101 // 1000 //———————————— //结果 0000 var_dump($x & $y); ?>
註:實例只列舉了一個,其他各位如果有興趣的話,可以自己嘗試輸出,看看結果和自己預想的一樣不
#七、運算子優先權
本章的學習等級為了解等級。
因為絕大多數人都不會去記運算子的優先順序。
我們在小學的時候,優先順序是先乘除後加減。想要改變運算的優先權加括號即可。
重點:不用記優先級,確定不了的時候號上括號把優先級標出來即可
註:各位如果有興趣的話,可以翻看PHP手冊,上面有詳細的優先權描述
八、三元運算子和其它運算子
還有一些特殊的運算子和符號,我們再來進行講解。或許以後我們需要用到
1.三元運算子
相當我們下一章要學習的if.. .else結構。不過三元運算子的寫法更簡潔,語法格式如下:
判斷$x是否為真? 為真執行的程式碼片段(只能寫一句程式碼):為假執行的程式碼片段(只能寫一句程式碼);
實例:
<?php $x = true; $x ? $y = 5 : $y = 6; //输出5 echo $y; ?>
2.反引號
我們常常需要顯示IP位址,在PHP裡面可不可能顯示我們windows的IP位址呢?用反引號,就可以執行我們的命令(不過有些虛擬伺服器是禁止執行這些的命令腳本的):
源碼:
<?php echo '<pre>'; echo `ipconfig`; echo '</pre>'; ?>
輸出結果:
##註:反引號在鍵盤左上角,Tab鍵的上方
#3.@符號
單行抑制錯誤,以後的章節我們也會講解到實例,原始碼如下:<?php //打开一个不存在的文件adfsafasdfasfasdfdsadf.txt,你运行一下会发现报错了。 //再前面再加上一个@符看看效果 $fp = fopen('adfsafasdfasfasdfdsadf.txt','r'); //fp = fopen('adfsafasdfasfasdfdsadf.txt','r'); ?>輸出:加上@之後
<?php //打开一个不存在的文件adfsafasdfasfasdfdsadf.txt,你运行一下会发现报错了。 //再前面再加上一个@符看看效果 //$fp = fopen('adfsafasdfasfasdfdsadf.txt','r'); @$fp = fopen('adfsafasdfasfasdfdsadf.txt','r'); ?>沒有輸出,警告也沒有,可見@符號抑制了錯誤