2024 年 PHP 日本研討會

運算子

目錄

運算子是一種會接受一個或多個值(在程式設計術語中稱為運算式),並產生另一個值的東西(因此該構造本身成為一個運算式)。

運算子可以根據其接受的值的數量進行分組。單元運算子只接受一個值,例如 !邏輯非運算子)或 ++遞增運算子)。二元運算子接受兩個值,例如常見的 算術運算子 +(加)和 -(減),大多數 PHP 運算子都屬於這一類。最後,有一個 三元運算子? :,它接受三個值;這通常簡稱為「三元運算子」(儘管更準確的稱呼或許應該是條件運算子)。

PHP 運算子的完整列表在 運算子優先順序 一節中列出。該節也說明了運算子優先順序和結合性,它們決定了包含多個不同運算子的表達式是如何計算的。

新增註記

使用者貢獻的註記 4 則註記

匿名
20 年前
這當然應該很清楚,但我認為必須特別提一下

AND 與 && 不同

例如

<?php $a && $b || $c; ?>
與以下不同
<?php $a AND $b || $c; ?>

第一個是
(a and b) or c

第二個是
a and (b or c)

因為 || 的優先順序高於 and,但低於 &&

當然,總是使用 [ && 和 || ] 或 [ AND 和 OR ] 就可以了,但至少應該遵守以下規則

<?php $a = $b && $c; ?>
<?php $a
= $b AND $c; ?>

第一行程式碼會將 $a 設定為 $b 與 $c 比較的結果,兩者都必須為 true,而第二行程式碼會將 $a 設定為 $b,然後 - 之後 - 將其成功與否與 $c 的值進行比較

或許對某些 tricky 的程式碼很有用,並有助於防止錯誤 :D

祝好,Warhog
anisgazig at gmail dot com
4 年前
運算子用於執行運算。

運算子主要分為三組。
1. 接受一個值的單元運算子
2. 接受兩個值的二元運算子
3. 接受三個值的三元運算子

運算子主要分為三組,共有十七種類型。
1. 算術運算子
+ = 加法
- = 減法
* = 乘法
/ = 除法
% = 模數
** = 指數

2. 賦值運算子
= 等於

3. 陣列運算子
+ = 聯集
== = 等於
=== = 完全等於
!= = 不等於
<> = 不等於
!== = 不全等

4. 位元運算子
& = and(且)
^ = xor(互斥或)
| = or(或)


<< = 左移
>> = 右移

5. 比較運算子
== = 等於
=== = 全等
!= = 不等於
!== = 不全等
<> = 不等於
< = 小於
<= = 小於等於
> = 大於
>= = 大於等於
<=> = 宇宙飛船運算子 (三向比較運算子)

6. 執行運算子
`` = 反引號

7. 錯誤控制運算子
@ = at 符號 (錯誤抑制符號)

8. 遞增/遞減運算子
++$a = 前置遞增
$a++ = 後置遞增
--$a = 前置遞減
$a-- = 後置遞減

9. 邏輯運算子
&& = And(且)
|| = Or(或)
! = Not(非)
and = And(且)
xor = Xor(互斥或)
or = Or(或)

10. 字串運算子
. = 字串連接運算子
.= = 字串連接賦值運算子

11. 類型運算子
instanceof = instanceof(是否為某個類別的實例)

12. 三元運算子或條件運算子
?: = 三元運算子

13. 空值合併運算子
?? = 空值合併運算子

14. 複製新物件運算子
clone new = clone new(複製新物件)

15. yield from 運算子

yield from = yield from(從產生器委派產生值)

16. yield 運算子
yield = yield(產生值)

17. print 運算子
print = print(輸出)
yasuo_ohgaki at hotmail dot com
23 年前
其他語言書籍的運算子優先順序章節通常包含 "(" 和 ")" ──除了我手上的一本 Perl 書籍。(在 PHP 中,"{" 和 "}" 也應該被考慮在內)。然而,PHP 手冊的優先順序列表中並未列出 "(" 和 ")"。看起來 "(" 和 ")" 具有更高的優先順序,正如它應該的那樣。

注意:如果您編寫以下程式碼,您將需要 "()" 才能獲得預期的值。

<?php
$bar
= true;
$str = "TEST". ($bar ? 'true' : 'false') ."TEST";
?>

如果沒有 "(" 和 ")",$str 中只會得到 "true"。
(PHP4.0.4pl1/Apache DSO/Linux, PHP4.0.5RC1/Apache DSO/W2K Server)
這可能是由於優先順序造成的。
figroc at gmail dot com
16 年前
變數符號 '$' 應該被視為最高優先順序的運算子,這樣可變變數,例如 $$a[0] 才不會造成解析器的混淆。[https://php.dev.org.tw/manual/en/language.variables.variable.php]
To Top