PHP Operators 大全,一次看懂所有運算子

a blackboard with a bunch of diagrams on it

PHP 是一種廣泛使用的腳本語言,擁有豐富的運算子。理解這些 PHP Operators 是掌握 PHP 程式設計的關鍵。本篇文章將提供清晰的範例和解釋。

算術運算子

算術運算子用於基本的數學運算。

加法(+

將兩個值相加。

$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

參考:Null Coalescing Operator

錯誤控制運算子(@

抑制錯誤訊息。

$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 的強大潛力,並開發出更加健壯和靈活的應用程式。

參考來源:php.language.operators

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *