Giới thiệuCác toán tử trong PHP là các dấu hiệu và ký hiệu được sử dụng để chỉ ra rằng một hoạt động cụ thể nên được thực hiện trên một toán hạng trong một biểu thức. Toán tử là các đối tượng hoạt động hoặc mục tiêu. Một biểu thức chứa các toán hạng và toán tử được sắp xếp một cách hợp lý. in PHP are signs and symbols which are used to indicate that a particular operation should be performed on an operand in an expression. Operands are the operation objects, or targets. An expression contains operands and operators arranged in a logical manner. Show Trong PHP, có rất nhiều nhà khai thác, được nhóm thành các loại sau:
Một số ví dụ về các nhà khai thác này là:
Các toán tử phân công có điều kiện là gì?Các toán tử gán có điều kiện, như tên gọi, gán các giá trị cho các toán hạng dựa trên kết quả của một điều kiện nhất định. Nếu điều kiện là 4, the value is assigned. If the condition is 5, the value is
not assigned.Có hai loại nhà điều hành phân công có điều kiện: toán tử thuê và các nhà khai thác kết hợp null. 1. Người vận hành thuê nhà $z = varexp1 ?? varexp2;
$z = varexp1 ?? varexp2;
|
Thí dụ | Tên | Kết quả |
---|---|---|
$ a == $ b | Bình đẳng | 4 nếu $ a bằng $ b sau khi loại tung. if $a is equal to $b after type juggling.
|
$ a === $ b | Giống hệt nhau | 4 nếu $ a bằng $ b và chúng cùng loại. if $a is equal to $b, and they are of the same type.
|
$ a! = $ b | Không công bằng | 4 nếu $ a không bằng $ b sau khi loại tung. if $a is not equal to $b after type juggling.
|
$ a $ b | Không công bằng | 4 nếu $ a không bằng $ b sau khi loại tung. if $a is not equal to $b after type juggling.
|
$ a $ b | $ a! == $ b | Không định nghĩa if $a is not equal to $b, or they are not of the same type. |
4 nếu $ A không bằng $ B hoặc chúng không thuộc cùng loại. | $ a <$ b | Ít hơn if $a is strictly less than $b. |
4 nếu $ a hoàn toàn dưới $ b. | $ a> $ b | Lớn hơn if $a is strictly greater than $b. |
4 nếu $ a hoàn toàn lớn hơn $ b. | $ a | Ít hơn hoặc bằng if $a is less than or equal to $b. |
4 nếu $ a nhỏ hơn hoặc bằng $ b. | $ a> = $ b | Lớn hơn hoặc bằng if $a is greater than or equal to $b. |
$ a $ b | $ a! == $ b | Không định nghĩaint less than, equal to, or greater than zero when $a is less than, equal to, or greater than $b, respectively. |
$z = varexp1 ?? varexp2;
4 nếu $ A không bằng $ B hoặc chúng không thuộc cùng loại.$ a <$ b
Ít hơnstring is compared to a number or a numeric string then the string was converted to a number before performing the comparison. This can lead to surprising results as can be seen with the following example:
+
9
-
0
-
1$z = varexp1 ?? varexp2;
4 nếu $ a hoàn toàn dưới $ b.bool(true) bool(true) bool(true) bool(true) 0
$ a> $ b
bool(false) bool(true) bool(true) bool(true) a
-
2
-
3
-
4Lớn hơn
$z = varexp1 ?? varexp2;
4 nếu $ a hoàn toàn lớn hơn $ b.
$ a | Ít hơn hoặc bằng | Kết quả |
---|---|---|
$ a == $ b or string | Bình đẳng | 4 nếu $ a bằng $ b sau khi loại tung.- 5 to "", numerical or lexical comparison
|
$ a === $ b or null | Giống hệt nhau | 4 nếu $ a bằng $ b và chúng cùng loại.bool, 5 < 4
|
$ a! = $ b | $ a! = $ b | Không công bằng |
4 nếu $ a không bằng $ b sau khi loại tung., resource, int or float
| 4 nếu $ a không bằng $ b sau khi loại tung., resource, int or float
| $ a $ b |
$ a! == $ b | $ a! == $ b | Không định nghĩa |
$ a! = $ b | Giống hệt nhau | 4 nếu $ a bằng $ b và chúng cùng loại. is always greater
|
$ a! == $ b | Giống hệt nhau | 4 nếu $ a bằng $ b và chúng cùng loại. is always greater
|
$ a! = $ b
-
8
Không công bằng
-
9
$ a <$ b
Ít hơn
$z = varexp1 ?? varexp2;
4 nếu $ a hoàn toàn dưới $ b.floats are represented internally, you should not test two floats for equality. $ a> $ bfloat for more information.
Lớn hơn: Be aware that PHP's type juggling is not always obvious when comparing values of different types, particularly comparing ints to bools or ints to strings. It is therefore generally advisable to use
+
7 and+
8 comparisons rather than*
2 and*
3 in most cases.
$z = varexp1 ?? varexp2; 4 nếu $ a hoàn toàn lớn hơn $ b.
$ a
Ít hơn hoặc bằng
$z = varexp1 ?? varexp2;
4 nếu $ a nhỏ hơn hoặc bằng $ b.$ a> = $ b
*
6
Lớn hơn hoặc bằngexpr2 if
expr1 evaluates to
4, and expr3 if expr1 evaluates to $z = varexp1 ?? varexp2;
5. $z = varexp1 ?? varexp2;
$z = varexp1 ?? varexp2;
4 nếu $ a lớn hơn hoặc bằng $ b.expr1 if expr1 evaluates to $z = varexp1 ?? varexp2;
4, and expr3 otherwise. expr1 is only evaluated once in this case. Tàu không gian: Please note that the ternary operator is an expression, and that it doesn't evaluate to a variable, but to the result of an expression. This is important to know if you want to return a variable by reference. The statement
/
2 in a return-by-reference function will therefore not work and a warning is issued.
Ghi chú::
Nên tránh các biểu thức ternary "xếp chồng". Hành vi của PHP khi sử dụng nhiều hơn một toán tử ternary chưa được khám phá trong một biểu thức duy nhất là không rõ ràng so với các ngôn ngữ khác. Thật vậy, trước Php 8.0.0, các biểu thức ternary đã được đánh giá liên kết trái, thay vì liên kết phải như hầu hết các ngôn ngữ lập trình khác. Dựa vào tính liên kết trái được không phản đối kể từ Php 7.4.0. Kể từ Php 8.0.0, toán tử ternary không liên kết.
Ví dụ #4 Hành vi ternary không rõ ràng
/
3
/
4/
5
Ghi chú::
Chuỗi các yếu tố ngắn (
6), tuy nhiên, là ổn định và hành xử hợp lý. Nó sẽ đánh giá đối với đối số đầu tiên đánh giá đến giá trị không giả mạo. Lưu ý rằng các giá trị không xác định vẫn sẽ đưa ra một cảnh báo.$z = varexp1 ?? varexp2;
Ví dụ #5 Chuỗi ngắn hạn
/
7
Nhà điều hành NULL kết hợp
Một nhà điều hành tốc ký hữu ích khác là "??" (hoặc null kết hợp lại) Nhà điều hành.
Ví dụ #6 gán giá trị mặc định
/
8
Biểu thức /
9 đánh giá là expr2 nếu expr1 là -
5 và expr1 khác.expr2 if expr1 is -
5, and expr1 otherwise.
Cụ thể, toán tử này không phát ra thông báo hoặc cảnh báo nếu giá trị phụ bên trái không tồn tại, giống như isset (). Điều này đặc biệt hữu ích trên các phím mảng.isset(). This is especially useful on array keys.
Lưu ý: Xin lưu ý rằng toán tử kết hợp null là một biểu thức và nó không đánh giá thành một biến, mà là kết quả của một biểu thức. Điều này rất quan trọng để biết nếu bạn muốn trả về một biến bằng cách tham khảo. Do đó, tuyên bố
%
1 trong chức năng hoàn trả sẽ không hoạt động và cảnh báo được đưa ra.: Please note that the null coalescing operator is an expression, and that it doesn't evaluate to a variable, but to the result of an expression. This is important to know if you want to return a variable by reference. The statement%
1 in a return-by-reference function will therefore not work and a warning is issued.
Ghi chú::
Các nhà điều hành NULL kết hợp có quyền ưu tiên thấp. Điều đó có nghĩa là nếu trộn nó với các toán tử khác (như kết hợp chuỗi hoặc toán tử số học) có thể sẽ được yêu cầu.
%
2
Ghi chú::
Xin lưu ý rằng người vận hành Null Coalescing cho phép làm tổ đơn giản:
Ví dụ #7 Nhà điều hành NULL NULL kết hợp
%
3
%
4%
5
Crazy888s tại hotmail dot com ¶
12 năm trước
%
6
%
7
%
8Niall tại Maranelda Dot org ¶ ¶
4 năm trước
%
9
>
0
>
1
>
2
%
8Adam tại Caucho Dot Com ¶ ¶
16 năm trước
>
4
>
5
>
6
>
7
%
8rshawiii tại yahoo dot com ¶ ¶
16 năm trước
>
9
$z = varexp1 ?? varexp2;
00$z = varexp1 ?? varexp2;
01$z = varexp1 ?? varexp2;
02rshawiii tại yahoo dot com ¶ ¶
Giám mục ¶
$z = varexp1 ?? varexp2;
03$z = varexp1 ?? varexp2;
04$z = varexp1 ?? varexp2;
05$z = varexp1 ?? varexp2;
06%
815 năm trước ¶
Sumon Mahmud ¶
$z = varexp1 ?? varexp2;
08$z = varexp1 ?? varexp2;
09$z = varexp1 ?? varexp2;
10$z = varexp1 ?? varexp2;
11$z = varexp1 ?? varexp2;
12%
82 năm trước ¶
Cuong Huy đến ¶
$z = varexp1 ?? varexp2;
14$z = varexp1 ?? varexp2;
15%
811 năm trước ¶
Sumon Mahmud ¶
$z = varexp1 ?? varexp2;
172 năm trước ¶
Cuong Huy đến ¶
$z = varexp1 ?? varexp2;
18$z = varexp1 ?? varexp2;
19$z = varexp1 ?? varexp2;
20$z = varexp1 ?? varexp2;
2111 năm trước
$z = varexp1 ?? varexp2;
23$z = varexp1 ?? varexp2;
24$z = varexp1 ?? varexp2;
25$z = varexp1 ?? varexp2;
26%
8Ryan Mott ¶ ¶
Marcin Kuzawiski ¶
$z = varexp1 ?? varexp2;
28$z = varexp1 ?? varexp2;
29$z = varexp1 ?? varexp2;
30$z = varexp1 ?? varexp2;
31%
87 năm trước ¶
22$z = varexp1 ?? varexp2;
$z = varexp1 ?? varexp2;
33$z = varexp1 ?? varexp2;
34$z = varexp1 ?? varexp2;
35$z = varexp1 ?? varexp2;
36%
8