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

在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運算 | |
低 | = | 指定運算 |