PHP運算子大全

2020-07-16 10:05:10
運算子是說明特定操作的符號,是構造 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