運算子是說明特定操作的符號,是構造 PHP 語言表示式的工具。本節介紹 PHP 語言常用的運算子及其使用。
算術運算子
算術運算子可以對整型和浮點型的資料進行運算。PHP 中的算術運算子如表所示。
PHP 算數運算子
運算子 |
名稱 |
描述 |
範例 |
x+y |
加 |
x 和 y 的和 |
1+2 |
x-y |
減 |
x 和 y 的差 |
2-1 |
x*y |
乘 |
x 和 y 的積 |
2*3 |
x/y |
除 |
x 除以 y 的商 |
4/2 |
x%y |
取模(除法的餘數) |
x 除以 y 的餘數 |
5%2 |
-x |
取反 |
x 取反 |
-3 |
intdiv(x,y) |
整除 |
x 除以 y 的商的整數部分,此為 PHP 7 新增運算子 |
intdiv(10,3) |
下面的範例演示了不同算術運算子的使用。
<?php
$x=10;
$y=3;
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 intdiv(10,3);
?>
執行以上程式碼輸出結果如下:
13
7
30
3.3333333333333
1
3
遞增遞減運算子
遞增遞減運算子如表所示。
遞增遞減運算子
運算子 |
名稱 |
描述 |
++x |
預遞增 |
x 先加 1,然後返回 x 的值 |
x++ |
後遞增 |
先返回 x 的值,x 再加 1 |
-x |
預遞減 |
x 先減 1,然後返回 x 的值 |
x- |
後遞減 |
先返回 x 的值,x 再加 1 |
遞增遞減運算子的使用範例:
<?php
$x = 2;
echo ++$x; //輸出3
$x = 5;
echo $x++; //輸出5
$x = 7;
echo --$x; //輸出6
$x = 9;
echo $x--; //輸出9
?>
執行以上程式碼在瀏覽器中的列印結果是:
3569
比較運算子
比較運算子如表所示。
比較運算子
運算子 |
名稱 |
描述 |
x==y |
等於 |
如果 x 等於 y,返回 true,否則返回 false |
x===y |
恆等於 |
如果 x 恆等於 y,且兩者資料型別相同,返回 true,否則返回 false |
x!=y |
不等於 |
如果 x 不等於 y,返回 true,否則返回 false |
x<>y |
不等於 |
如果 x 不等於 y,返回 true,否則返回 false |
x!==y |
不恆等於 |
如果 x 不等於 y,或兩者型別不同,返回 true,否則返回 false |
x>y |
大於 |
如果 x 大於 y,返回 true,否則返回 false |
x<y |
小於 |
如果 x 小於 y,返回 true,否則返回 false |
x>=y |
大於等於 |
如果 x 大於等於 y,返回 true,否則返回 false |
x<=y |
小於等於 |
如果 x 小於等於 y,返回 true,否則返回 false |
x<=>y |
組合比較符 |
如果 x 的值和 y 的值相等(不是恆等於),就返回 0;如果 x 的值大於 y 的值,就返回 1;如果 x 的值小於 y 的值,就返回 -1。此為 PHP 7 新增運算子 |
比較運算子的使用範例如下:
<?php
$x=100;
$y="100";
var_dump($x == $y); //bool(true)
var_dump($x === $y); //bool(false)
var_dump($x != $y); //bool(false)
var_dump($x !== $y); //bool(true)
$a=50;
$b=90;
var_dump($a > $b); //bool(false)
var_dump($a < $b); //bool(true)
var_dump($a <> $b); //bool(true)
var_dump($a <=> $b); //int(-1)
var_dump($b <=> $a); //int(1)
var_dump($x <=> $y); //int(0)
?>
邏輯運算子
邏輯運算子如表所示。
邏輯運算子
運算子 |
名稱 |
描述 |
a and b |
與 |
只有 a 和 b 都為 true 才返回 true |
x or y |
或 |
a 和 b 至少一個為 true 才返回 true |
a xor b |
互斥或 |
a 和 b 僅有一個為 true 就返回 true |
a && b |
與 |
a 和 b 都為 true 才返回 true |
a || b |
或 |
a 和 b 至少一個為 true 就返回 true |
!a |
非 |
當 a 為 true 時返回 false,a 為 false 時返回 true |
邏輯運算子的使用範例如下:
<?php
$a = true;
$b = false;
var_dump($a and $b); //bool(false)
var_dump($a or $b); //bool(true)
var_dump($a && $b); //bool(false)
var_dump($a || $b); //bool(true)
var_dump($a xor $a); //bool(false)
var_dump($a xor $b); //bool(true)
var_dump(!$a); //bool(false)
?>
三元運算子
三元運算子的語法格式如下:
(expr1) ? (expr2) : (expr3)
當 expr1 求值結果為 true 時,上述表示式返回 expr2 的值,否則返回 expr3 的值。
可以省略 expr2,此時語法格式為:(expr1) ? : (expr3)。同樣,當 expr1 求值結果為 true 時,返回 expr1,否則返回 expr3。
在 PHP 7 版本多了一個 NULL 合併運算子
??
。例如,(expr1) ?? (expr2),當 expr1 不為 NULL 時返回 expr1 的值,否則返回 expr2 的值。範例如下:
<?php
$a = (1>2) 'big' : 'small';
$b = (3>2) : 'small';
$c = (1>2) : 'big';
$d = null2;
$e = 52;
var_dump($a); //string(5) "small"
var_dump($b); //bool(true)
var_dump($c); //string(3) "big"
var_dump($d); //int(2)
var_dump($e); //int(5)
?>
字串連線運算子
PHP 中使用英文字元
.
將兩個或多個字串連線起來。範例如下:
<?php
$a = 'hello';
$b = 'world';
$c = $a . $b;
echo $C;
?>
以上程式碼的輸出結果是:
hello world
賦值運算子
賦值運算子是把基本賦值運算子
=
右邊的值給左邊的變數或常數,如表所示。
賦值運算子
運算子 |
範例 |
展開形式 |
= |
$a='b' |
$a='b' |
+= |
$a+=5 |
$a=$a+5 |
-= |
$a-=5 |
$a=$a-5 |
*= |
$a*=5 |
$a=$a*5 |
/= |
$a/=5 |
$a=$a/5 |
.= |
$a.=5 |
$a=$a.5 |
%= |
$a%=5 |
$a=$a%5 |
位運算子
位運算子是指對二進位制位從低位到高位對齊後進行運算,如表所示。
位運算子
運算子 |
作用 |
範例 |
& |
按位元與 |
$a&$b |
| |
按位元或 |
$a|$b |
^ |
按位元互斥或 |
$a^$b |
~ |
按位元取反 |
~$b |
<< |
向左移位 |
$a<<$b |
>> |
向右移位 |
$a>>$b |
位運算子的使用範例如下:
<?php
$a = 8;
$b = 15;
echo ($a & $b) . "<br/>";
echo ($a | $b) . "<br/>";
echo ($a ^ $b) . "<br/>";
echo (~$b) . "<br/>";
echo ($a << $b) . "<br/>";
echo ($a >> $b) . "<br/>";
?>
執行結果如下:
8
15
7
-16
262144
0
在 PHP 7 中,位移負的位置將會產生異常,左位移超出位數會返回 0。例如,echo(1>>-1) 程式會報錯:Fatal error:Uncaught ArithmeticError:Bit shift by negative number。
程式碼如下:
echo (1 >> 2);
echo "<br/>";
echo (-1 >> 2);
列印結果為:
0
-1