PHP 是一種廣泛使用的腳本語言,擁有豐富的運算子。理解這些 PHP Operators 是掌握 PHP 程式設計的關鍵。本篇文章將提供清晰的範例和解釋。
Table of Contents
算術運算子
算術運算子用於基本的數學運算。
加法(+
)
將兩個值相加。
$a = 5;
$b = 3;
echo $a + $b; // 輸出:8
減法(-
)
從一個值中減去另一個值。
$a = 5;
$b = 3;
echo $a - $b; // 輸出:2
乘法(*
)
將兩個值相乘。
$a = 5;
$b = 3;
echo $a * $b; // 輸出:15
除法(/
)
將一個值除以另一個值。
$a = 15;
$b = 3;
echo $a / $b; // 輸出:5
模數(%
)
返回除法的餘數。
$a = 5;
$b = 3;
echo $a % $b; // 輸出:2
指數(**
)
次方。
$a = 5;
$b = 3;
echo $a ** $b; // 輸出:125
賦值運算子
賦值運算子用於將值寫入變量。
基本賦值(=
)
將值賦給變量。
$a = 5;
echo $a; // 輸出:5
組合運算子 (+=
)
結合算術操作和賦值。
$a = 5;
$a += 3; // 等同於 $a = $a + 3
echo $a; // 輸出:8
對於 -=
(減法賦值)、*=
(乘法賦值)、/=
(除法賦值)、%=
(模數賦值)、**=
(指數賦值)和 .=
(串接賦值)都是一樣的邏輯。
比較運算子
比較運算子用來比較兩個值。
相等(==
)
檢查兩個值是否相等。
$a = 5;
$b = "5";
var_dump($a == $b); // 輸出:bool(true)
完全相同(===
)
檢查值是否相等且類型相同。
$a = 5;
$b = "5";
var_dump($a === $b); // 輸出:bool(false)
!=
(不等於)、<>
(不等於)、!==
(非完全相同)、>
(大於)、<
(小於)、>=
(大於等於)、<=
(小於等於)都是比較兩個值,得到一個布林值。
遞增/遞減運算子
用於增加或減少變量的值。
遞增(++
)
將變量的值增加一。
$a = 5;
$a++;
echo $a; // 輸出:6
遞減(--
)
將變量的值減少一。
$a = 5;
$a--;
echo $a; // 輸出:4
邏輯運算子
邏輯運算子用於根據一個或多個條件來決定布林值(真或假)。
And(&&
、and
)
當且僅當兩個操作數都為真時,結果才為真。&&
和 and
在功能上是相同的,但 &&
的優先級更高。
$a = true;
$b = false;
var_dump($a && $b); // 輸出:bool(false)
var_dump($a and $b); // 輸出:bool(false)
Or(||
、or
)
當至少一個操作數為真時,結果為真。||
和 or
在功能上是相同的,但 ||
的優先級更高。
$a = true;
$b = false;
var_dump($a || $b); // 輸出:bool(true)
var_dump($a or $b); // 輸出:bool(true)
Not(!
)
用於反轉操作數的布爾值。如果操作數為真,則返回假,反之亦然。
$a = true;
var_dump(!$a); // 輸出:bool(false)
Xor(xor
)
當兩個操作數中僅有一個為真時,結果為真。如果兩個操作數都是真或都是假,則結果為假。
$a = true;
$b = false;
var_dump($a xor $b); // 輸出:bool(true)
$a = true;
$b = true;
var_dump($a xor $b); // 輸出:bool(false)
字串運算子
字串運算子用於操作字串。
串接(.
、.=
)
連接兩個字串。
$a = "Hello";
$b = " World";
echo $a . $b; // 輸出:Hello World
陣列運算子
陣列運算子用於比較和合併陣列,這些運算子使得處理陣列成為一個更加簡單的控制方式。
聯合(+
)
聯合運算子用於合併兩個陣列。如果有重複的鍵,則以左邊陣列的鍵值為準。
$a = ["a" => "apple", "b" => "banana"];
$b = ["b" => "berry", "c" => "cherry"];
$result = $a + $b;
print_r($result); // 輸出:Array ([a] => apple [b] => banana [c] => cherry)
相等(==
)
如果兩個陣列具有相同的鍵值對,則這兩個陣列相等。
$a = ["a" => "apple", "b" => "banana"];
$b = ["b" => "banana", "a" => "apple"];
var_dump($a == $b); // 輸出:bool(true)
絕對相同(===
)
不僅內容必須相同,陣列中的元素順序和類型也必須完全一致。
$a = ["a" => "apple", "b" => "banana"];
$b = ["b" => "banana", "a" => "apple"];
$c = ["a" => "apple", "b" => "banana"];
var_dump($a === $b); // 輸出:bool(false)
var_dump($a === $c); // 輸出:bool(true)
不相等(!=
或 <>
)
如果兩個陣列的鍵值對不完全相同,則它們不相等。
$a = ["a" => "apple", "b" => "banana"];
$b = ["b" => "berry", "a" => "apple"];
var_dump($a != $b); // 輸出:bool(true)
var_dump($a <> $b); // 輸出:bool(true)
非完全相同(!==
)
如果兩個陣列在類型、值、順序或類型中有任何差異,則它們不完全相同。
$a = ["a" => "apple", "b" => "banana"];
$b = ["b" => "banana", "a" => "apple"];
var_dump($a !== $b); // 輸出:bool(true)
條件(三元)運算子(? :
)
為條件語句提供簡寫。
$a = 5;
echo ($a > 3) ? "Greater" : "Lesser";
空合併運算子(??
)
Null Coalescing Operator,返回第一個非空值,意思是如果第一個值是空值就返回第二個值。
$a = null;
$b = "value";
echo $a ?? $b; // 輸出:value
錯誤控制運算子(@
)
抑制錯誤訊息。
$value = @file_get_contents("nonexistentfile.txt");
這樣會抑制 file_get_contents 拋出錯誤。
類型運算子(instanceof
)
檢查物件是否為特定類別。
class MyClass {}
$a = new MyClass();
var_dump($a instanceof MyClass); // 輸出:bool(true)
位元運算子
位元運算子用來對整數中的位元進行操作,這些運算子通常用於高效率的數據處理和底層數據操作。
位元 AND(&
)
位元 AND 運算子。只有當兩個相對應的位元都是 1 時,結果位元才是 1。
$a = 9; // 1001 in binary
$b = 5; // 0101 in binary
echo $a & $b; // 輸出:1 (0001 in binary)
位元 OR(|
)
位元 OR 運算子。如果兩個相對應的位元中至少有一個是 1,則結果位元是 1。
$a = 9; // 1001 in binary
$b = 5; // 0101 in binary
echo $a | $b; // 輸出:13 (1101 in binary)
位元 XOR(^
)
位元 XOR 運算子。當兩個相對應的位元不同時,結果位元是 1。
$a = 9; // 1001 in binary
$b = 5; // 0101 in binary
echo $a ^ $b; // 輸出:12 (1100 in binary)
位元 NOT(~
)
位元 NOT 運算子。對整數的位元進行反轉,即 0 變 1,1 變 0。
$a = 9; // 1001 in binary
echo ~$a; // 輸出:-10 (二進位補碼表示)
左移(<<
)
將整數的位元向左移動指定的位數(右邊補 0)。
$a = 9; // 1001 in binary
echo $a << 2; // 輸出:36 (100100 in binary)
右移(>>
)
將整數的位元向右移動指定的位數。
$a = 9; // 1001 in binary
echo $a >> 2; // 輸出:2 (10 in binary)
這些位元運算子在處理效能敏感或底層數據操作的場景中特別有用,例如在加密、圖像處理、自定義數據結構或低階網路通信中。
以上每一個運算子都提供了特定功能,使得程式碼更加高效、靈活,並能夠處理各種複雜的數據操作和邏輯判斷。
運算子在程式語言中都有其獨特的角色,理解並運用這些運算子是走上 PHP 程式設計之路的重要一步,從基本的算術運算到複雜的陣列和位元操作,熟練掌握這些工具將使您能夠更深入地探索 PHP 的強大潛力,並開發出更加健壯和靈活的應用程式。