運算式由運算元和運算子組成。運算元是常數、變數或函數;而運算子就是運算符號,如+ - * /等。
以一條指定運算式給變數的程式敘述來說明,如下列:

在PHP程式語法中,一些計算和判斷會常常用到,所以一定會用到運算子計算。運算子分成下列幾種,接下來分別介紹:
1. 算術運算子
就是一般熟悉的加減乘除運算,如下表:
| 運算子 | 意義 | 範例 | 運算結果 |
|---|---|---|---|
| + | 加法 | 4+9 | 13 |
| - | 減法 | 15-7 | 8 |
| * | 乘法 | 5*12 | 60 |
| / | 除法 | 9/3 | 3 |
| % | 取餘數 | 66%5 | 1 |
程式說明
<?php
$addition = 7+3; //加法
$subtraction = 7-3; //減法
$multiplication = 7*3; //乘法
$division = 7/3; //除法
$remainder = 7%3 //取餘數
echo "\$addition = $addition <br>";
echo "\$subtraction = $subtraction <br>";
echo "\$multiplication = $multiplication <br>";
echo "\$division = $division <br>";
echo "\$remainder = $remainder";
?>
執行結果
$addition = 10 $subtraction = 4 $multiplication = 2.3333333333333 $remainder = 1
2. 遞增與遞減運算子
遞增與遞減運算子即是一個變數的值會隨著執行次數持續加1或減1,如下表所示:
| 運算子 | 意義 | 範例($a=6) | 運算結果 |
|---|---|---|---|
| ++ | 遞增 | $a++ | $a=7 |
| -- | 遞減 | $a-- | $a=5 |
程式說明
<?php
$ascending = 3;
echo "\$ascending = $ascending <br>";
$ascending++; //遞增
echo "\$ascending++ = $ascending <br>";
$ascending++; //遞增
echo "\$ascending++ = $ascending <br>";
$decreasing = 2;
echo "\$decreasing = $decreasing <br>";
$decreasing--; //遞減
echo "\$decreasing-- = $decreasing <br>";
$decreasing--; //遞減
echo "\$decreasing-- = $decreasing <br>"
?>
執行結果
$ascending= 3 $ascending++= 4 $ascending++=5 $decreasing = 2 $decreasing--= 1 $decreasing--= 0
3.指定運算子與複合運算子
指定運算子[ = ] 即是指定數值或運算式給某一變數,換句話說,我們可以用指定運算子來改變變數的值。指定運算子可以配合算術運算子來建立複合運算子,以有效簡化運算式,如下表所示:
| 運算子 | 意義 | 範例 | 運算拆解 |
|---|---|---|---|
| = | 指定數值到變數內 | $a=10 | $a=10 |
| += | 變數與數值相加 | $a+=20 | $a=$a+20 |
| -= | 變數與數值相減 | $a-=30 | $a=$a-30 |
| *= | 變數與數值相乘 | $a*=40 | $a=$a*40 |
| /= | 變數與數值相除 | $a/=50 | $a=$a/50 |
| %= | 變數與數值相取餘數 | $a%=60 | $a=4a%60 |
| .= | 變數與字串串接 | $a.=70 | $a=$a.70 |
| <<= | 左移 x 位元 | $a<<=1 | $a=$a<<1 |
| >>= | 右移 x 位元 | $a>>=2 | $a=$a>>2 |
| &= | 相互位元 and 運算 | $a&=$b | $a=$a & $b |
| |= | 相互位元 or 運算 | $a |=$b | $a=$a | $b |
| ^= | 相互位元 xor 運算 | $a^=$b | $a=$a ^ $b |
程式說明
<?php
$number = 3; //指定數值到變數內
echo "\$number = $number <br>";
$number += 4; //數字相加
echo "\$number += 4 --> \$number = $number <br>";
$number <<= 2; //左移2位元
echo "$number <<=2 --> \$number = $number <br>";
$number &= 3; //相互位元and運算
echo "|$number &= 3 --> \$number = $number <br>";
$number .= "~Hello"; //串接字串
echo "\$number .= \"~Hello\"--> \$number = $number <br>";
?>
執行結果
$number=3 $number +=4 --> $number= 7 $number <<=2 -->$number=28 $number &=3 --> $number= 0 $number .="~Hello" -->$number=0~Hello
4. 比較運算子
比較運算子用於對兩運算元進行比較判斷,通常會與條件敘述配合使用,可依據不同情況執行不同運算式。常用的必較運算子如下表所示:
| 運算子 | 意義 | 範例($a=3,$b=5) | 運算結果 |
|---|---|---|---|
| = = | 等於 | $a= = $b | false |
| = = = | 全等於 | $a= = = $b | false |
| != | 不等於 | $a!=$b | true |
| <> | 不等於 | $a<>$b | true |
| !== | 非等於 | $a!==$b | true |
| > | 大於 | $a>$b | false |
| < | 小於 | $a<$b | true |
| >= | 大於等於 | $a>=$b | false |
| <= | 小於等於 | $a<=$B | true |
程式說明
<?php
$number1 = 3; $number2 = 5;
if ($number1 == $number2) {
echo "\$number1 == \$number2 成立 <br>";
}else {
echo "\$number1 == \$number2 不成立 <br>";
}
if ($number1 !== $number2) {
echo "\$number1 !== \$number2 成立 <br>";
}else {
echo "\$number1 !== \$number2 不成立 <br>";
}
if ($number1 >= $number2) {
echo "\$number1 >= \$number2 成立 <br>";
}else {
echo "\$number1 >= \$number2 不成立 <br>";
}
?>
執行結果
$number1 == $number2 不成立 $number1 !== $number2 成立 $number1 >= $number2 不成立
5. 邏輯運算子
邏輯運算子即是判斷其兩個變數、常數或運算式的布林直。常用的邏輯運算子如下表所示:
| 運算子 | 意義 | 範例($a=true $b=false) | 運算結果 |
|---|---|---|---|
| &&(and) | 條件 and 運算 | $a && $b ($a and $b) | false |
| ||(or) | 條件 or 運算 | $a || $b ($a or $b) | true |
| !(not) | 條件 not 運算 | !$a | false |
| xor | 條件 xor 運算 | $a xor $b | true |
&&運算子只有當兩個運算元皆為true的情況下,其運算結果才為true
|| 運算子只要兩運算元其中之一為true,其運算結果就是true
! 運算子為一元運算子,功用為將該運算元做真假反轉
xor 運算子當兩運算元相異時,其運算結果才為true
程式說明
<?php
$boolean1 = true; $boolean2 = false;
if ($boolean1 && $boolean2) {
echo "\$boolean1 && \$boolean2 成立 <br>";
}else {
echo "\$boolean1 && \$boolean2 不成立 <br>";
}
if ($boolean1 || $boolean2) {
echo "\$boolean1 || \$boolean2 成立 <br>";
}else {
echo "\$boolean1 || \$boolean2 不成立 <br>";
}
if ($boolean1 xor $boolean2) {
echo "\$boolean1 xor \$boolean2 成立 <br>";
}else {
echo "\$boolean1 xor \$boolean2 不成立 <br>";
}
?>
執行結果
$boolean1 && $boolean2 不成立
$boolean1 || $boolean2 成立
$boolean1 xor $boolean2 成立
6. 位元運算子
位元運算子即是進行二位元運算。舉例來說,$a=6 , $b=3
| 運算子 | 意義 | 範例 | 運算結果 |
|---|---|---|---|
| & | 位元 AND 運算 | $a&$b | 2 |
| | | 位元 OR 運算 | $a|$b | 7 |
| ^ | 位元 XOR 運算 | $a^$b | 5 |
| ~ | 位元 NOT 運算 | ~$a | -7 |
| << | 位元左移 | $a<<2 | 24 |
| >> | 位元右移 | $a>>1 | 3 |
程式說明
<?php
$number1 = 6; $number2 = 3;
echo "\$number1 & \$number2 = ";
echo ($number1 & $number2); //AND運算
echo "<br>";
echo "\$number1 | \$number2 = ";
echo ($number1 | $number2); //OR運算
echo "<br>";
echo "\$number1 ^ \$number2 = ";
echo ($number1 ^ $number2); //XOR運算
echo "<br>";
echo "~\$number1 = ";
echo ~$number1; //NOT運算
echo "<br>";
echo "\$number1 << \$number2 = ";
echo ($number1 << $number2); //左移
echo "<br>";
echo "\$number1 >> \$number2 = ";
echo ($number1 >> $number2); //右移
?>
執行結果
$number1 & $number2 = 2 $number1 | $number2 = 7 $number1 ^ $number2 = 5 ~$number1 = -7 $number1 << $number2 = 48 $number1 >> $number2 = 0
7. 字串連接運算子
字串連接運算子即是用來做字連結使用。
| 運算子 | 意義 | 範例 | 運算結果 |
|---|---|---|---|
| . | 字串連接 | "AB"."CD" | "ABCD" |
程式說明:
<?php
echo "Hello"."World"."!"; //字串連接
?>
執行結果
Hello World!
8. 運算子優先順序
PHP上的運算子非常多種,為了確保在有多個運算子的運算式能夠得到相同的結果,運算子便有所謂的計算優先順序。就如同[先乘除後加減] 的規則一般。下列表格說明PHP的運算子的優先順序
| 優先 | 運算子 | 說明 |
|---|---|---|
| 高 | () | 括號 |
| ↓ | ! 、~、 ++、 -- | 邏輯與位元NOT運算、遞增遞減運算 |
| * 、/ 、 % | 乘法、除法、取餘數運算 | |
| +、 - | 加法、減法、字串連接運算 | |
| << 、 >> | 位元左移、位元右移運算 | |
| > 、 >= 、 < 、 <= | 大於、大於等於、小於、小於等於運算 | |
| == 、 != 、 === | 等於、不等於、全等於運算 | |
| & 、 | 、 ^ 、 ~ | 位元AND、OR、XOR、NOT運算 | |
| && 、 || | 邏輯 AND、OR運算 | |
| 低 | = | 指定運算 |