移至主內容

PHP的運算子

PHP的運算子

Written by Wanding on 5 August 2021

運算式由運算元和運算子組成。運算元是常數、變數或函數;而運算子就是運算符號,如+ - * /等。

以一條指定運算式給變數的程式敘述來說明,如下列:

運算式

 

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

回PHP目錄