Sự ưu tiên của một toán tử chỉ định cách "chặt chẽ" nó liên kết hai biểu thức với nhau. Ví dụ: trong biểu thức 1 +
5 * 3
, câu trả lời là 16
chứ không phải 18
vì toán tử nhân ["*"] có độ ưu tiên cao hơn so với toán tử bổ sung ["+"]. Dấu ngoặc đơn có thể được sử dụng để buộc ưu tiên, nếu cần thiết. Ví dụ: [1 + 5] * 3
đánh giá thành 18
.
Khi các nhà khai thác có ưu tiên bằng nhau của họ quyết định cách các nhà khai thác được nhóm lại. Ví dụ: "-" là liên kết trái, do đó 1 - 2 - 3
được nhóm là [1 - 2] - 3
và đánh giá thành -4
. "=" Mặt khác là liên kết đúng, vì vậy $a = $b = $c
được nhóm là ____10.
Các nhà khai thác ưu tiên bằng nhau không liên kết không thể được sử dụng bên cạnh nhau, ví dụ 1 +
5 * 3
1 là bất hợp pháp trong PHP. Mặt khác, biểu thức 1 +
5 * 3
2 là hợp pháp, bởi vì toán tử 1 +
5 * 3
3 có quyền ưu tiên thấp hơn so với toán tử 1 +
5 * 3
4.
Sự kết hợp chỉ có ý nghĩa đối với các toán tử nhị phân [và ternary]. Các toán tử Unary là tiền tố hoặc postfix nên khái niệm này không được áp dụng. Ví dụ 1 +
5 * 3
5 chỉ có thể được nhóm là 1 +
5 * 3
6.
Việc sử dụng dấu ngoặc đơn, ngay cả khi không hoàn toàn cần thiết, thường có thể tăng khả năng đọc của mã bằng cách nhóm rõ ràng thay vì dựa vào sự ưu tiên của toán tử ngầm và sự kết hợp.
Bảng sau liệt kê các toán tử theo thứ tự ưu tiên, với các bảng có hiệu suất cao nhất ở đầu. Các nhà khai thác trên cùng một dòng có ưu tiên bằng nhau, trong trường hợp đó, sự kết hợp quyết định nhóm.
ưu tiên điều hành[n/a] | 1 +
5 * 3 7 1 +
5 * 3 8 | nhân bản và mới |
bên phải | 1 +
5 * 3 9 | Môn số học |
[n/a] | 1 +
5 * 3 7 1 +
5 * 3 8 | nhân bản và mới |
bên phải | 1 +
5 * 3 9 | Môn số học |
[n/a] | 1 +
5 * 3 7 1 +
5 * 3 8 | nhân bản và mới |
bên phải | 1 +
5 * 3 9 | Môn số học |
bên phải | 1 +
5 * 3 9 | Môn số học |
bên phải | 1 +
5 * 3 9 | Môn số học |
bên phải | 1 +
5 * 3 9 | Môn số học |
16 0 16 1 16 2 16 3 16 4 16 5 16 6 16 7 16 8 | Số học [Unary 16 0 và 16 1], tăng/giảm, bitwise, gõ đúc và kiểm soát lỗi | bên trái |
16 0 16 1 16 2 16 3 16 4 16 5 16 6 16 7 16 8 | Số học [Unary 16 0 và 16 1], tăng/giảm, bitwise, gõ đúc và kiểm soát lỗi | bên trái |
bên phải | 1 +
5 * 3 9 | Môn số học |
bên phải | 1 +
5 * 3 9 | Môn số học |
bên phải | 1 +
5 * 3 9 | Môn số học |
bên phải | 1 +
5 * 3 9 | nhân bản và mới |
bên phải | 1 +
5 * 3 9 | nhân bản và mới |
bên phải | 1 +
5 * 3 9 | Môn số học |
16 0 16 1 16 2 16 3 16 4 16 5 16 6 16 7 16 8 | Số học [Unary 16 0 và 16 1], tăng/giảm, bitwise, gõ đúc và kiểm soát lỗi | bên trái |
bên phải | 1 +
5 * 3 9 | Môn số học |
[n/a] | 1 +
5 * 3 7 1 +
5 * 3 8 | nhân bản và mới |
[n/a] | 1 +
5 * 3 7 1 +
5 * 3 8 | nhân bản và mới |
[n/a] | 1 +
5 * 3 7 1 +
5 * 3 8 | nhân bản và mới |
bên phải | 1 +
5 * 3 9 | nhân bản và mới |
bên phải | 1 +
5 * 3 9 | nhân bản và mới |
bên phải | 1 +
5 * 3 9 | nhân bản và mới |
bên phải
-4
5
1 +
5 * 3
9
Môn số học
-4
6
16
0 16
1 16
2 16
3 16
4 16
5 16
6 16
7 16
8
$a = $b = $c
0
Số học [Unary 16
0 và 16
1], tăng/giảm, bitwise, gõ đúc và kiểm soát lỗi
-1, or so I hope -1, or so I hope x minus one equals 3, or so I hope
bên trái:
18
4
loại hình
8.0.0 | 18 6 18 7 18 8 |
8.0.0 | Môn số học |
7.4.0 | 16 0 16 1 [1 + 5] * 3 1 |
7.4.0 | Dựa vào tính liên kết trái của toán tử ternary [1 - 2 - 3 4], tức là làm tổ nhiều toán tử ternary không được chấp nhận, không được dùng. |
fabmlk ¶ ¶
7 năm trước
1 +
5 * 3
10
tlili dot mokhtar tại gmail dot com ¶ ¶
1 năm trước
1 +
5 * 3
11
1 +
5 * 3
12
1 +
5 * 3
13
1 +
5 * 3
14
1 +
5 * 3
15
1 +
5 * 3
16
1 +
5 * 3
17
1 +
5 * 3
18
1 +
5 * 3
19
1 +
5 * 3
20
1 +
5 * 3
21
1 +
5 * 3
22Aaronw tại Catalyst dot net dot nz ¶ ¶
5 năm trước
1 +
5 * 3
23
1 +
5 * 3
24
1 +
5 * 3
22Carsten Milkau ¶ ¶
10 năm trước
1 +
5 * 3
26
1 +
5 * 3
27
1 +
5 * 3
28
1 +
5 * 3
22Ivan tại Dilber Dot Info ¶ ¶
5 năm trước
1 +
5 * 3
30
1 +
5 * 3
31
1 +
5 * 3
32Carsten Milkau ¶ ¶
10 năm trước
1 +
5 * 3
33
Ivan tại Dilber Dot Info ¶ ¶
7 năm trước
1 +
5 * 3
34
1 +
5 * 3
35
1 +
5 * 3
36
1 +
5 * 3
37tlili dot mokhtar tại gmail dot com ¶ ¶
1 năm trước
1 +
5 * 3
38
1 +
5 * 3
39
1 +
5 * 3
22Aaronw tại Catalyst dot net dot nz ¶ ¶
1 năm trước
1 +
5 * 3
41
1 +
5 * 3
42
1 +
5 * 3
43
1 +
5 * 3
44
1 +
5 * 3
22