Tham khảo - Biểu tượng này có nghĩa là gì trong PHP?
Cái này là cái gì?
Đây là một tập hợp các câu hỏi thường xuyên xuất hiện về cú pháp trong PHP. Đây cũng là một Wiki cộng đồng, vì vậy mọi người được mời tham gia duy trì danh sách này.
Tại sao thế này?
Trước đây, rất khó để tìm câu hỏi về toán tử và các mã thông báo cú pháp khác.¹
Ý tưởng chính là có các liên kết đến các câu hỏi hiện có trên Stack Overflow, vì vậy, chúng tôi dễ dàng tham khảo chúng hơn, không sao chép nội dung từ Hướng dẫn sử dụng PHP.
Lưu ý: Kể từ tháng 1 năm 2013, Stack Overflow hỗ trợ các ký tự đặc biệt . Chỉ cần bao quanh các cụm từ tìm kiếm bằng dấu ngoặc kép, ví dụ:[php] "==" vs "==="
Tôi nên làm gì ở đây?
Nếu bạn đã được ai đó chỉ vào đây vì bạn đã hỏi một câu hỏi như vậy, vui lòng tìm cú pháp cụ thể bên dưới. Các trang được liên kết với sổ tay PHP cùng với các câu hỏi được liên kết có thể sẽ trả lời câu hỏi của bạn khi đó. Nếu vậy, bạn được khuyến khích ủng hộ câu trả lời. Danh sách này không có ý nghĩa thay thế cho sự trợ giúp mà những người khác đã cung cấp.
Danh sách
Nếu mã thông báo cụ thể của bạn không được liệt kê bên dưới, bạn có thể tìm thấy nó trong Danh sách mã thông báo phân tích cú pháp .
&
Toán tử Bitwise hoặc Tham chiếu
- Bắt đầu một hàm PHP với dấu và có nghĩa là gì?
- Hiểu toán tử PHP & (dấu và, bitwise và)
- Toán tử "&" trong PHP
- Sự khác biệt giữa & và && trong PHP
- "&" Ở đây có nghĩa là gì trong PHP?
- "&" Có nghĩa là gì trong trường hợp này?
- Dấu "&" trong PHP có nghĩa là gì?
- Chữ ký này có nghĩa là gì (&) trong PHP?
- Toán tử "&" hoạt động như thế nào trong một hàm PHP?
- & In & 2 có nghĩa là gì trong PHP?
- Khi nào tôi nên sử dụng toán tử bitwise?
- Có bao giờ cần sử dụng dấu & ở trước một đối tượng không? (& $)
=&
Người giới thiệu
- Toán tử gán tham chiếu trong PHP, = &
- Toán tử "= &" và "& =" trong PHP có nghĩa là gì?
- Toán tử '& =' và '= &' làm gì?
- = & Có nghĩa là gì trong PHP?
&=
Toán tử Bitwise
- Toán tử "= &" và "& =" trong PHP có nghĩa là gì?
- Toán tử '& =' và '= &' làm gì?
&&
Toán tử logic
- Toán tử 'AND' so với '&&'
- Sự khác biệt giữa & và && trong PHP
- Có sự khác biệt nào giữa toán tử "và" và "&&" trong PHP không?
- PHP - và / hoặc từ khóa
%
Toán tử số học
- Dấu phần trăm có nghĩa là gì trong PHP?
- Toán tử% trong PHP là gì và làm cách nào để sử dụng nó trong các ví dụ trong thế giới thực?
!!
Toán tử logic
- Nhân đôi toán tử not (!!) trong PHP
@
Toán tử kiểm soát lỗi
- Việc sử dụng ký hiệu @ trong PHP là gì?
- Ký hiệu 'At' trước tên biến trong PHP: @ $ _ POST
- Các hàm PHP và @functions
- Tôi có nên sử dụng @ trong mã PHP của mình không?
- @ Có nghĩa là gì trong PHP?
?:
Nhà điều hành bậc ba
- Các toán tử PHP "là gì?" và ":" được gọi là gì và chúng làm gì?
- ?: toán tử ('toán tử Elvis') trong PHP
- Tôi có thể đọc ở đâu về các điều kiện được thực hiện với "?" và ":" (dấu hai chấm)?
- Sử dụng toán tử PHP 5.3 ?:
??
Toán tử Null Coalesce (kể từ PHP 7)
- Toán tử liên kết null của C # (??) trong PHP
?string
?int
?array
?bool
?float
Khai báo kiểu trả về vô hiệu (kể từ PHP 7.1)
- Khai báo kiểu trả về vô hiệu
:
Cú pháp thay thế cho cấu trúc điều khiển , Toán tử bậc ba
- ":" Trong PHP là gì?
- ":" Có nghĩa là gì trong PHP?
::
Toán tử phân giải phạm vi
- Hai dấu hai chấm trong PHP có nghĩa là gì?
- Ý nghĩa của tên mã thông báo PHP T_PAAMAYIM_NEKUDOTAYIM là gì?
- Sự khác biệt giữa :: (dấu hai chấm) và -> (mũi tên) trong PHP là gì?
- Chính xác thì các ràng buộc tĩnh muộn trong PHP là gì?
- static :: staticFunctionName ()
- T_PAAMAYIM_NEKUDOTAYIM không mong đợi, chờ T_NS_Separator
\
Không gian tên
- Dấu gạch chéo ngược trong PHP - nó có nghĩa là gì?
- \ (Dấu gạch chéo ngược) làm gì trong PHP (5.3+)?
->
Lớp và Đối tượng
- Toán tử "->" trong PHP được gọi là gì và bạn nói nó như thế nào khi đọc to mã?
- Chúng ta sử dụng toán tử đối tượng "->" trong PHP ở đâu?
- Sự khác biệt giữa :: (dấu hai chấm) và -> (mũi tên) trong PHP là gì?
- Cú pháp PHP là gì $var1->$var2 nghĩa là gì?
- "->" có nghĩa là gì / tham chiếu đến trong PHP?
=>
Mảng
- "=>" Có nghĩa là gì trong PHP?
- Sử dụng => trong PHP
- Làm gì $k => $v trong foreach ($ex as $k => $ v) nghĩa là gì?
^
Toán tử Bitwise
- Toán tử bitwise XOR ('^') hoạt động như thế nào?
- ^ Có nghĩa là gì trong PHP?
>>
Toán tử Bitwise
- >> nghĩa là gì trong PHP?
<<
Toán tử Bitwise
- Hành vi in lạ trong PHP?
<<<
Heredoc hoặc Nowdoc
- <<< END có nghĩa là gì trong PHP?
- Biểu thức PHP <<< EOB
- Trong PHP, "<<<" đại diện cho điều gì?
- Sử dụng <<< CON trong PHP
- Loại cú pháp này trong PHP là gì?
=
Người điều hành nhiệm vụ
- 3 khác nhau bằng
==
Toán tử so sánh
- Các toán tử so sánh đẳng thức PHP (== double =) và đồng nhất (=== triple =) khác nhau như thế nào?
- Toán tử PHP! = Và ==
- 3 khác nhau bằng
- Đánh vần và so sánh lớn hơn / nhỏ hơn (nghiêm ngặt) trong PHP
===
Toán tử so sánh
- "===" có nghĩa là gì?
- Các toán tử so sánh đẳng thức PHP (== double =) và đồng nhất (=== triple =) khác nhau như thế nào?
- 3 khác nhau bằng
- Đánh vần và so sánh lớn hơn / nhỏ hơn (nghiêm ngặt) trong PHP
!==
Toán tử so sánh
- Toán tử so sánh! == trong PHP có nghĩa là gì?
- Có sự khác biệt giữa! == và! = Trong PHP không?
!=
Toán tử so sánh
- Toán tử PHP! = Và ==
- Có sự khác biệt giữa! == và! = Trong PHP không?
- so sánh,! == so với! =
- Sự khác biệt giữa <> và! =
<>
Toán tử so sánh
- Toán tử PHP <>
- Toán tử <> của PHP
- Sự khác biệt giữa <> và! =
- Đánh vần và so sánh lớn hơn / nhỏ hơn (nghiêm ngặt) trong PHP
<=>
Toán tử so sánh (kể từ PHP 7.0)
- Toán tử tàu vũ trụ (so sánh ba chiều)
|
Toán tử Bitwise
- Sự khác biệt giữa | và || toán tử?
- Sử dụng một ống đơn có tác dụng gì '|' Trong một đối số hàm làm gì?
||
Toán tử logic
- Sự khác biệt giữa | và || toán tử?
- PHP - và / hoặc từ khóa
- Chính xác thì làm gì || nghĩa là?
- Hành vi của toán tử hoặc trong PHP
~
Toán tử Bitwise
- Toán tử ~ này có nghĩa là gì ở đây?
+
Toán tử số học , Toán tử mảng
- + toán tử cho mảng trong PHP?
+=
và -=
Người điều hành nhiệm vụ
- + = Dùng để làm gì?
- `$ Page - = 1` trong tài liệu PHP của tôi có nghĩa là gì?
++
và --
Các toán tử tăng / giảm
- Hiểu biết gia tăng
- Trả lời dưới đây
.=
Người điều hành nhiệm vụ
- Sự khác biệt giữa. = Và + = trong PHP là gì?
- Để hiểu một dòng PHP
.
Toán tử chuỗi
- Sự khác biệt giữa dấu chấm và dấu phẩy khi nối với echo so với return?
- Những gì hiện a. (dấu chấm) làm gì trong PHP?
,
Đối số hàm
- Sự khác biệt giữa dấu chấm và dấu phẩy khi nối với echo so với return?
,
Khai báo biến
- Dấu phẩy có nghĩa gì trong khai báo biến?
$$
Biến số
- $$ (đô la đô la hoặc đô la kép) có nghĩa là gì trong PHP?
- "$$" trong PHP là gì
- $ function () và biến $$
`
Người điều hành thực thi
- Dấu gạch ngược `` được gọi là gì?
<?=
Thẻ mở ngắn
- Biểu tượng này có nghĩa là gì trong PHP
- '
[]
Mảng (cú pháp ngắn kể từ PHP 5.4)
- Mảng PHP ... (Các) ý nghĩa của một dấu ngoặc trống là gì?
- Ý nghĩa của []
- Php array_push () so với myArray []
- [] Có nghĩa là gì khi đọc từ một mảng PHP?
- Viết tắt cho mảng: mảng $var = []trống theo nghĩa đen
<?
Mở và đóng thẻ
- Các thẻ ngắn PHP có được chấp nhận sử dụng không?
...
Giải nén đối số (kể từ PHP 5.6)
**
Luỹ thừa (kể từ PHP 5.6)
#
Nhận xét kiểu shell một dòng
- Tôi có thể sử dụng hàm băm cho nhận xét trong PHP không?
:?
Các kiểu trả về vô hiệu
- kiểu đối số phương thức php gợi ý với dấu chấm hỏi (? type)
?->
Cuộc gọi nhà điều hành NullSafe (kể từ PHP 8.0)
- Biểu tượng này có nghĩa là gì "? ->" trong php, trong một đối tượng hoặc giá trị null
Trả lời
Các toán tử tăng / giảm
++
toán tử gia tăng
--
toán tử giảm dần
Example Name Effect
---------------------------------------------------------------------
++$a Pre-increment Increments $a by one, then returns $a. $a++ Post-increment Returns $a, then increments $a by one.
--$a Pre-decrement Decrements $a by one, then returns $a. $a-- Post-decrement Returns $a, then decrements $a by one.
Chúng có thể đi trước hoặc sau biến.
Nếu đặt trước biến thì thao tác tăng / giảm được thực hiện cho biến trước rồi trả về kết quả. Nếu đặt sau biến, biến được trả về trước , thì thao tác tăng / giảm được thực hiện.
Ví dụ:
$apples = 10; for ($i = 0; $i < 10; ++$i) {
echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}
Ví dụ trực tiếp
Trong trường hợp trên ++$i
được sử dụng, vì nó nhanh hơn. $i++
sẽ có kết quả tương tự.
Tăng trước nhanh hơn một chút vì nó thực sự tăng biến và sau đó 'trả về' kết quả. Tăng sau tạo ra một biến đặc biệt, sao chép vào đó giá trị của biến đầu tiên và chỉ sau khi biến đầu tiên được sử dụng, thay thế giá trị của nó bằng biến thứ hai.
Tuy nhiên, bạn phải sử dụng $apples--
, vì trước tiên, bạn muốn hiển thị số quả táo hiện tại, sau đó bạn muốn trừ đi một quả từ nó.
Bạn cũng có thể tăng các chữ cái trong PHP:
$i = "a"; while ($i < "c") {
echo $i++;
}
Một khi z
đạt aa
được là tiếp theo, và như vậy.
Lưu ý rằng các biến ký tự có thể tăng lên nhưng không giảm và thậm chí như vậy chỉ các ký tự ASCII thuần túy (az và AZ) mới được hỗ trợ.
Bài đăng Tràn ngăn xếp:
- Hiểu biết gia tăng
Toán tử Bitwise
Một chút là gì? Một bit là đại diện của 1 hoặc 0. Về cơ bản là TẮT (0) và BẬT (1)
Byte là gì? Một byte được tạo thành từ 8 bit và giá trị cao nhất của một byte là 255, có nghĩa là mọi bit đều được thiết lập. Chúng ta sẽ xem xét lý do tại sao giá trị tối đa của một byte là 255.
-------------------------------------------
| 1 Byte ( 8 bits ) |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|
-------------------------------------------
Đại diện này của 1 Byte
1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 Byte)
Một vài ví dụ để hiểu rõ hơn
Toán tử "AND": &
$a = 9; $b = 10;
echo $a & $b;
Điều này sẽ xuất ra số 8. Tại sao? Hãy xem bằng cách sử dụng ví dụ bảng của chúng tôi.
-------------------------------------------
| 1 Byte ( 8 bits ) |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|
-------------------------------------------
| $a | 0| 0| 0| 0| 1| 0| 0| 1| ------------------------------------------- | $b | 0| 0| 0| 0| 1| 0| 1| 0|
-------------------------------------------
| & | 0| 0| 0| 0| 1| 0| 0| 0|
-------------------------------------------
Vì vậy, bạn có thể thấy từ bảng bit duy nhất mà chúng chia sẻ với nhau là bit 8.
Ví dụ thứ hai
$a = 36; $b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100 $b = 01100111
Hai bit được chia sẻ là 32 và 4, khi cộng lại với nhau sẽ trả về 36.
Toán tử "Hoặc": |
$a = 9; $b = 10;
echo $a | $b;
Điều này sẽ xuất ra số 11. Tại sao?
-------------------------------------------
| 1 Byte ( 8 bits ) |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|
-------------------------------------------
| $a | 0| 0| 0| 0| 1| 0| 0| 1| ------------------------------------------- | $b | 0| 0| 0| 0| 1| 0| 1| 0|
-------------------------------------------
| | | 0| 0| 0| 0| 1| 0| 1| 1|
-------------------------------------------
Bạn sẽ nhận thấy rằng chúng tôi có 3 bit được thiết lập, trong các cột 8, 2 và 1. Cộng các số đó lại: 8 + 2 + 1 = 11.
<=>
Nhà điều hành tàu vũ trụ
Đã thêm trong PHP 7
Các nhà điều hành tàu vũ trụ <=>
là toán tử so sánh mới nhất được thêm vào trong PHP 7. Đó là một phi kết hợp điều hành nhị phân với độ ưu tiên tương tự như các nhà khai thác bình đẳng ( ==
, !=
, ===
, !==
). Toán tử này cho phép so sánh ba chiều đơn giản hơn giữa các toán hạng bên trái và bên phải.
Toán tử dẫn đến một biểu thức số nguyên của:
0
khi cả hai toán hạng bằng nhau- Nhỏ hơn
0
khi toán hạng bên trái nhỏ hơn toán hạng bên phải - Lớn hơn
0
khi toán hạng bên trái lớn hơn toán hạng bên phải
ví dụ
1 <=> 1; // 0
1 <=> 2; // -1
2 <=> 1; // 1
Một ứng dụng thực tế tốt của việc sử dụng toán tử này là các lệnh gọi lại kiểu so sánh được mong đợi trả về một số nguyên 0, âm hoặc dương dựa trên so sánh ba chiều giữa hai giá trị. Hàm so sánh được chuyển đến usortlà một trong những ví dụ như vậy.
Trước PHP 7, bạn sẽ viết ...
$arr = [4,2,1,3]; usort($arr, function ($a, $b) {
if ($a < $b) {
return -1;
} elseif ($a > $b) {
return 1;
} else {
return 0;
}
});
Kể từ PHP 7, bạn có thể viết ...
$arr = [4,2,1,3]; usort($arr, function ($a, $b) {
return $a <=> $b;
});
_
Bí danh cho gettext ()
Ký tự gạch dưới '_' như trong _()
là bí danh của gettext()hàm.
Syntax Name Description
x == y Equality True if x and y have the same key/value pairs
x != y Inequality True if x is not equal to y
x === y Identity True if x and y have the same key/value pairs
in the same order and of the same types
x !== y Non-identity True if x is not identical to y
++ x Pre-increment Increments x by one, then returns x
x ++ Post-increment Returns x, then increments x by one
-- x Pre-decrement Decrements x by one, then returns x
x -- Post-decrement Returns x, then decrements x by one
x and y And True if both x and y are true x=6 y=3
(x < 10 and y > 1) returns true
x && y And True if both x and y are true x=6 y=3
(x < 10 && y > 1) returns true
x or y Or True if any of x or y are true x=6 y=3
(x < 10 or y > 10) returns true
x || y Or True if any of x or y are true x=6 y=3
(x < 3 || y > 1) returns true
a . b Concatenation Concatenate two strings: "Hi" . "Ha"
Hằng số ma thuật : Mặc dù đây không chỉ là biểu tượng mà là một phần quan trọng của họ mã thông báo này. Có tám hằng số ma thuật thay đổi tùy thuộc vào nơi chúng được sử dụng.
__LINE__
: Số dòng hiện tại của tệp.
__FILE__
: Đường dẫn đầy đủ và tên tệp của tệp. Nếu được sử dụng bên trong bao gồm, tên của tệp được bao gồm sẽ được trả về. Kể từ PHP 4.0.2, __FILE__
luôn chứa một đường dẫn tuyệt đối với các liên kết tượng trưng được giải quyết trong khi trong các phiên bản cũ hơn, nó chứa đường dẫn tương đối trong một số trường hợp.
__DIR__
: Thư mục của tệp. Nếu được sử dụng bên trong bao gồm, thư mục của tệp được bao gồm sẽ được trả về. Điều này tương đương với dirname(__FILE__)
. Tên thư mục này không có dấu gạch chéo trừ khi nó là thư mục gốc. (Đã thêm trong PHP 5.3.0.)
__FUNCTION__
: Tên chức năng. (Được thêm vào trong PHP 4.3.0) Kể từ PHP 5, hằng số này trả về tên hàm như nó đã được khai báo (phân biệt chữ hoa chữ thường). Trong PHP 4, giá trị của nó luôn là chữ thường.
__CLASS__
: Tên lớp. (Được thêm trong PHP 4.3.0) Kể từ PHP 5, hằng số này trả về tên lớp như nó đã được khai báo (phân biệt chữ hoa chữ thường). Trong PHP 4, giá trị của nó luôn là chữ thường. Tên lớp bao gồm không gian tên mà nó được khai báo (ví dụ Foo\Bar
). Lưu ý rằng PHP 5.4 __CLASS__
cũng hoạt động theo các đặc điểm. Khi được sử dụng trong một phương thức tính trạng, __CLASS__
tên của lớp mà tính trạng được sử dụng.
__TRAIT__
: Tên đặc điểm. (Được thêm vào trong PHP 5.4.0) Kể từ PHP 5.4, hằng số này trả về đặc điểm như nó đã được khai báo (phân biệt chữ hoa chữ thường). Tên đặc điểm bao gồm không gian tên mà nó được khai báo (ví dụ Foo\Bar
).
__METHOD__
: Tên phương thức của lớp. (Được thêm trong PHP 5.0.0) Tên phương thức được trả về như khi nó được khai báo (phân biệt chữ hoa chữ thường).
__NAMESPACE__
: Tên của không gian tên hiện tại (phân biệt chữ hoa chữ thường). Hằng số này được định nghĩa trong thời gian biên dịch (Được thêm vào trong PHP 5.3.0).
Nguồn
Loại toán tử
instanceof
được sử dụng để xác định xem một biến PHP có phải là một đối tượng khởi tạo của một lớp nhất định hay không.
<?php
class mclass { }
class sclass { }
$a = new mclass; var_dump($a instanceof mclass);
var_dump($a instanceof sclass);
Ví dụ trên sẽ xuất ra:
bool(true)
bool(false)
Lý do: Ví dụ trên $a
là một đối tượng của mclass
vì vậy chỉ sử dụng một mclass
dữ liệu không phải đối tượng củasclass
Ví dụ với kế thừa
<?php
class pclass { }
class childclass extends pclass { }
$a = new childclass; var_dump($a instanceof childclass);
var_dump($a instanceof pclass);
Ví dụ trên sẽ xuất ra:
bool(true)
bool(true)
Ví dụ với Clone
<?php
class cloneable { }
$a = new cloneable;
$b = clone $a;
var_dump($a instanceof cloneable); var_dump($b instanceof cloneable);
Ví dụ trên sẽ xuất ra:
bool(true)
bool(true)
Tổng quan về các toán tử trong PHP :
Toán tử logic:
- $a && $b: ĐÚNG nếu cả hai$a and $b là ĐÚNG.
- $a || $b: ĐÚNG nếu một trong hai$a or $b là ĐÚNG.
- $a xor $b: ĐÚNG nếu một trong hai$a or $b là ĐÚNG, nhưng không phải cả hai.
- ! $ a: TRUE nếu $ a không đúng.
- $a and $b: ĐÚNG nếu cả hai$a and $b là ĐÚNG.
- $a or $b: ĐÚNG nếu một trong hai$a or $b là ĐÚNG.
Toán tử so sánh:
- $a == $b: ĐÚNG nếu$a is equal to $b sau khi tung hứng kiểu.
- $a === $b: ĐÚNG nếu$a is equal to $b, và chúng cùng loại.
- $a != $b: ĐÚNG nếu$a is not equal to $b sau khi tung hứng kiểu.
- $a <> $b: ĐÚNG nếu$a is not equal to $b sau khi tung hứng kiểu.
- $a !== $b: ĐÚNG nếu$a is not equal to $b, hoặc chúng không cùng loại.
- $a < $b : ĐÚNG nếu$a is strictly less than $b.
- $a > $b : ĐÚNG nếu$a is strictly greater than $b.
- $a <= $b : ĐÚNG nếu$a is less than or equal to $b.
- $a >= $b : ĐÚNG nếu$a is greater than or equal to $b.
- $a <=> $b : Một số nguyên nhỏ hơn, bằng hoặc lớn hơn 0 khi$a is respectively less than, equal to, or greater than $b. Có sẵn từ PHP 7.
- $a ? $b: $ c : nếu $ a trả về$b else return $c ( toán tử bậc ba )
- $a ?? $c : Giống như$a ? $a: $ c ( toán tử liên kết null - yêu cầu PHP> = 7)
Toán tử số học:
- - $ a : Ngược lại với $ a.
- $ a + $ b : Tổng của $ a và $ b.
- $ a - $ b : Hiệu của $ a và $ b.
- $ a * $ b : Tích của $ a và $ b.
- $ a / $ b : Thương của $ a và $ b.
- $ a% $ b : Phần còn lại của $ a chia cho $ b.
- $ a ** $ b : Kết quả của việc nâng $ a lên mức $ b'th (được giới thiệu trong PHP 5.6)
Các toán tử tăng / giảm:
- ++ $ a : Số gia tăng$a by one, then returns $a.
- $ a ++ : Trả về $ a, sau đó tăng từng $ a.
- - $ a : Giảm dần$a by one, then returns $a.
- $ a-- : Trả về $ a, sau đó giảm $ a từng cái một.
Toán tử Bitwise:
- $ a & $ b : Các bit được đặt trong cả $ a và $ b đều được đặt.
- $ a | $ b : Các bit được đặt trong $ a hoặc $ b được đặt.
- $ a ^ $ b : Các bit được đặt trong $ a hoặc $ b nhưng không phải cả hai đều được đặt.
- ~ $ a : Các bit được đặt trong $ a sẽ không được đặt và ngược lại.
- $ a << $ b : Dịch chuyển các bit của $ a $ b bước sang trái (mỗi bước có nghĩa là "nhân với hai")
- $ a >> $ b : Dịch chuyển các bit của $ a $ b từng bước sang phải (mỗi bước có nghĩa là "chia cho hai")
Toán tử chuỗi:
- $ a. $ b : Hợp của $ a và $ b.
Toán tử mảng:
- $ a + $ b : Liên hợp của $ a và $ b.
- $ a == $ b : TRUE nếu $ a và $ b có cùng cặp khóa / giá trị.
- $ a === $ b : ĐÚNG nếu $ a và $ b có các cặp khóa / giá trị giống nhau theo cùng thứ tự và cùng kiểu.
- $ a! = $ b : ĐÚNG nếu $ a không bằng $ b.
- $ a <> $ b : ĐÚNG nếu $ a không bằng $ b.
- $ a! == $ b : TRUE nếu $ a không trùng với $ b.
## Toán tử Chuyển nhượng:
- $ a = $ b : Giá trị của $ b được gán cho $ a
- $ a + = $ b : Tương tự như $ a =$a + $b
- $a -= $b : Giống như$a = $a - $ b
- $ a * = $b : Same as $a = $a * $b
- $a /= $b : Giống như$a = $a / $ b
- $ a% = $ b : Tương tự như $ a =$a % $b
- $a **= $b: Giống như $a = $a ** $ b
- $ a. = $ b : Tương tự như $ a =$a . $b
- $a &= $b : Giống như$a = $a & $ b
- $ a | = $ b : Tương tự như $ a =$a | $b
- $a ^= $b : Giống như$a = $a ^ $ b
- $ a << = $ b : Tương tự như $ a =$a << $b
- $a >>= $b : Giống như$a = $a >> $ b
- $ a ?? = $ b : Giá trị của $ b được gán cho$a if $a là null hoặc không được xác định ( toán tử gán liên kết null - yêu cầu PHP> = 7.4)
Ghi chú
and
toán tử và or
toán tử có quyền ưu tiên thấp hơn toán tử gán =
.
Điều này có nghĩa $a = true and false;
là tương đương với ($a = true) and false
.
Trong hầu hết các trường hợp, bạn có thể sẽ muốn sử dụng &&
và ||
, hoạt động theo cách được biết đến từ các ngôn ngữ như C, Java hoặc JavaScript.
Nhà điều hành tàu vũ trụ<=>
(Đã thêm trong PHP 7)
Ví dụ cho <=>toán tử Spaceship (PHP 7, Nguồn: Hướng dẫn sử dụng PHP):
Số nguyên, Số thực, Chuỗi, Mảng & đối tượng để so sánh ba chiều của các biến.
// Integers
echo 10 <=> 10; // 0
echo 10 <=> 20; // -1
echo 20 <=> 10; // 1
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
// Comparison is case-sensitive
echo "B" <=> "a"; // -1
echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1
// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1
// Objects
$a = (object) ["a" => "b"]; $b = (object) ["a" => "b"];
echo $a <=> $b; // 0
$a = (object) ["a" => "b"]; $b = (object) ["a" => "c"];
echo $a <=> $b; // -1
$a = (object) ["a" => "c"]; $b = (object) ["a" => "b"];
echo $a <=> $b; // 1
// only values are compared
$a = (object) ["a" => "b"]; $b = (object) ["b" => "b"];
echo $a <=> $b; // 1
{}
Dấu ngoặc nhọn
- Khối - dấu ngoặc nhọn / không có dấu ngoặc nhọn?
- Dấu ngoặc nhọn trong chuỗi trong PHP
- Dấu ngoặc nhọn PHP trong ký hiệu mảng
Và một số từ về bài viết cuối cùng
$x[4] = 'd'; // it works $x{4} = 'd'; // it works
$echo $x[4]; // it works
$echo $x{4}; // it works
$x[] = 'e'; // it works $x{} = 'e'; // does not work
$x = [1, 2]; // it works $x = {1, 2}; // does not work
echo "${x[4]}"; // it works echo "${x{4}}"; // does not work
echo "{$x[4]}"; // it works echo "{$x{4}}"; // it works
Toán tử liên kết rỗng (??)
Toán tử này đã được thêm vào trong PHP 7.0 cho trường hợp phổ biến là cần sử dụng toán tử bậc ba kết hợp với isset()
. Nó trả về toán hạng đầu tiên nếu nó tồn tại và không tồn tại NULL
; nếu không nó trả về toán hạng thứ hai của nó.
<?php
// Fetches the value of $_GET['user'] and returns 'nobody' // if it does not exist. $username = $_GET['user'] ?? 'nobody'; // This is equivalent to: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>
Chuỗi PHP: Chuỗi PHP có thể được chỉ định theo bốn cách chứ không chỉ hai cách:
1) Chuỗi trích dẫn đơn:
$string = 'This is my string'; // print This is my string
2) Chuỗi trích dẫn kép:
$str = 'string';
$string = "This is my $str"; // print This is my string
3) Heredoc:
$string = <<<EOD
This is my string
EOD; // print This is my string
4) Nowdoc (kể từ PHP 5.3.0):
$string = <<<'END_OF_STRING'
This is my string
END_OF_STRING; // print This is my string
HỎI:
Nghĩa =>
là gì?
CÂU TRẢ LỜI:
=>
Là biểu tượng mà con người chúng ta quyết định sử dụng để phân tách "Key" => "Value"
các cặp trong Mảng liên kết.
ĐIỀU CHỈNH:
Để hiểu điều này, chúng ta phải biết Mảng liên kết là gì. Điều đầu tiên xuất hiện khi một lập trình viên thông thường nghĩ về một mảng ( trong PHP ) sẽ là một cái gì đó tương tự như:
$myArray1 = array(2016, "hello", 33);//option 1 $myArray2 = [2016, "hello", 33];//option 2
$myArray3 = [];//option 3 $myArray3[] = 2016;
$myArray3[] = "hello"; $myArray3[] = 33;
Trong trường hợp, nếu chúng ta muốn gọi mảng trong một số phần sau của mã, chúng ta có thể thực hiện:
echo $myArray1[1];// output: hello echo $myArray2[1];// output: hello
echo $myArray3[1];// output: hello
Càng xa càng tốt. Tuy nhiên, là con người, chúng ta có thể khó nhớ rằng chỉ số [0]
của mảng là giá trị của năm 2016, chỉ số [1]
của mảng là lời chào và chỉ số [2]
của mảng là giá trị số nguyên đơn giản . Giải pháp thay thế sau đó chúng tôi sẽ có là sử dụng cái được gọi là Mảng liên kết . Mảng liên kết có một vài khác biệt so với Mảng tuần tự ( đó là những gì các trường hợp trước đó là do chúng tăng chỉ số được sử dụng trong một trình tự xác định trước, bằng cách tăng 1 cho mỗi giá trị sau ).
Sự khác biệt ( giữa mảng tuần tự và mảng kết hợp ):
Sau khi khai báo Mảng liên kết, bạn không chỉ bao gồm
value
những gì bạn muốn đặt vào mảng, mà bạn còn đặt giá trị chỉ mục (được gọi làkey
) mà bạn muốn sử dụng khi gọi mảng trong các phần sau của mã. Cú pháp sau đây được sử dụng trong suốt của nó tuyên bố:"key" => "value"
.Khi sử dụng Mảng liên kết,
key
giá trị sau đó sẽ được đặt bên trong chỉ mục của mảng để truy xuất giá trị mong muốnvalue
.
Ví dụ:
$myArray1 = array(
"Year" => 2016,
"Greetings" => "hello",
"Integer_value" => 33);//option 1
$myArray2 = [ "Year" => 2016, "Greetings" => "hello", "Integer_value" => 33];//option 2 $myArray3 = [];//option 3
$myArray3["Year"] = 2016; $myArray3["Greetings"] = "hello";
$myArray3["Integer_value"] = 33;
Và bây giờ, để nhận được đầu ra giống như trước đây, key
giá trị sẽ được sử dụng trong chỉ mục mảng:
echo $myArray1["Greetings"];// output: hello
echo $myArray2["Greetings"];// output: hello echo $myArray3["Greetings"];// output: hello
ĐIỂM CUỐI CÙNG:
Vì vậy, từ ví dụ trên, khá dễ dàng để thấy rằng =>
biểu tượng được sử dụng để thể hiện mối quan hệ của một Mảng liên kết giữa mỗi cặp key
và value
trong một mảng DURING sự khởi đầu của các giá trị trong mảng.
Câu hỏi :
"&" Ở đây có nghĩa là gì trong PHP?
Toán tử "&" trong PHP
Làm cho cuộc sống dễ dàng hơn khi chúng ta đã quen với nó .. (kiểm tra kỹ ví dụ bên dưới)
& thường kiểm tra các bit được đặt trong cả hai$a and $b được thiết lập.
bạn có nhận thấy những cuộc gọi này hoạt động như thế nào không
error_reporting(E_ERROR | E_WARNING | E_PARSE);
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
error_reporting(E_ALL & ~E_NOTICE);
error_reporting(E_ALL);
Vì vậy, đằng sau tất cả ở trên là trò chơi của toán tử bitwise và các bit.
Một trường hợp hữu ích trong số này là các cấu hình dễ dàng như đưa ra bên dưới, vì vậy một trường số nguyên duy nhất có thể lưu trữ hàng nghìn tổ hợp cho bạn.
Hầu hết mọi người đã đọc tài liệu nhưng không giải thích trường hợp sử dụng trong thế giới thực của các toán tử bitwise này.
Ví dụ rằng bạn sẽ yêu
<?php
class Config {
// our constants must be 1,2,4,8,16,32,64 ....so on
const TYPE_CAT=1;
const TYPE_DOG=2;
const TYPE_LION=4;
const TYPE_RAT=8;
const TYPE_BIRD=16;
const TYPE_ALL=31;
private $config; public function __construct($config){
$this->config=$config;
if($this->is(Config::TYPE_CAT)){ echo 'cat '; } if($this->is(Config::TYPE_DOG)){
echo 'dog ';
}
if($this->is(Config::TYPE_RAT)){ echo 'rat '; } if($this->is(Config::TYPE_LION)){
echo 'lion ';
}
if($this->is(Config::TYPE_BIRD)){ echo 'bird '; } echo "\n"; } private function is($value){
return $this->config & $value;
}
}
new Config(Config::TYPE_ALL);
// cat dog rat lion bird
new Config(Config::TYPE_BIRD);
//bird
new Config(Config::TYPE_BIRD | Config::TYPE_DOG);
//dog bird
new Config(Config::TYPE_ALL & ~Config::TYPE_DOG & ~Config::TYPE_CAT);
//rat lion bird
==
được sử dụng để kiểm tra bình đẳng mà không xem xét kiểu dữ liệu biến
===
được sử dụng để kiểm tra sự bình đẳng cho cả giá trị biến và kiểu dữ liệu
Thí dụ
$a = 5
if ($a == 5)
- sẽ đánh giá đúngif ($a == '5')
- sẽ đánh giá thành true, bởi vì trong khi so sánh cả hai giá trị này, PHP chuyển đổi nội bộ giá trị chuỗi đó thành số nguyên và sau đó so sánh cả hai giá trịif ($a === 5)
- sẽ đánh giá đúngif ($a === '5')
- sẽ đánh giá thành false, vì giá trị là 5, nhưng giá trị 5 này không phải là số nguyên.
Toán tử Null Coalesce "??" (Đã thêm trong PHP 7)
Không phải là tên catchiest cho một toán tử, nhưng PHP 7 mang lại liên kết null khá tiện dụng nên tôi nghĩ mình sẽ chia sẻ một ví dụ.
Trong PHP 5, chúng ta đã có một toán tử bậc ba, kiểm tra một giá trị và sau đó trả về phần tử thứ hai nếu điều đó trả về true và phần tử thứ ba nếu không:
echo $count ? $count : 10; // outputs 10
Ngoài ra còn có một cách viết tắt cho phép bạn bỏ qua phần tử thứ hai nếu nó giống với phần tử đầu tiên: echo $ count ?: 10; // cũng xuất ra 10
Trong PHP 7, chúng tôi cũng nhận được ?? toán tử mà thay vì chỉ ra sự nhầm lẫn cực kỳ, đó là cách tôi thường sử dụng hai dấu chấm hỏi với nhau thay vì cho phép chúng ta liên kết một chuỗi giá trị với nhau. Đọc từ trái sang phải, giá trị đầu tiên tồn tại và không phải là giá trị rỗng là giá trị sẽ được trả về.
// $a is not set
$b = 16; echo $a ?? 2; // outputs 2
echo $a ?? $b ?? 7; // outputs 16
Cấu trúc này hữu ích cho việc ưu tiên cho một hoặc nhiều giá trị có lẽ đến từ đầu vào của người dùng hoặc cấu hình hiện có và quay trở lại một cách an toàn về một mặc định nhất định nếu cấu hình đó bị thiếu. Đó là một tính năng nhỏ nhưng đó là một tính năng mà tôi biết rằng tôi sẽ sử dụng ngay sau khi các ứng dụng của tôi nâng cấp lên PHP 7.
Khai báo kiểu trả về vô hiệu
PHP 7 bổ sung hỗ trợ cho các khai báo kiểu trả về. Tương tự như khai báo kiểu đối số, khai báo kiểu trả về chỉ định kiểu giá trị sẽ được trả về từ một hàm. Các kiểu tương tự có sẵn cho khai báo kiểu trả về cũng như có sẵn cho khai báo kiểu đối số.
Việc nhập nghiêm ngặt cũng có ảnh hưởng đến các khai báo kiểu trả về. Trong chế độ yếu mặc định, các giá trị trả về sẽ bị ép buộc về loại chính xác nếu chúng chưa thuộc loại đó. Ở chế độ mạnh, giá trị trả về phải đúng kiểu, nếu không, lỗi Loại sẽ được ném ra.
Kể từ phiên bản PHP 7.1.0, các giá trị trả về có thể được đánh dấu là không thể sử dụng bằng cách đặt trước tên kiểu bằng dấu chấm hỏi (?). Điều này có nghĩa là hàm trả về kiểu được chỉ định hoặc NULL.
<?php
function get_item(): ?string {
if (isset($_GET['item'])) { return $_GET['item'];
} else {
return null;
}
}
?>
Nguồn
Ba DOTS dưới dạng Toán tử Splat (...) (kể từ PHP 5.6)
PHP có một toán tử "..." (Ba dấu chấm) được gọi là Toán tử Splat. Nó được sử dụng để truyền một số tham số tùy ý trong một hàm và loại hàm này được gọi là Variadic Functions. Hãy lấy ví dụ để sử dụng "..." (Ba dấu chấm).
Ví dụ 1:
<?php
function calculateNumbers(...$params){ $total = 0;
foreach($params as $v){
$total = $total + $v; } return $total;
}
echo calculateNumbers(10, 20, 30, 40, 50);
//Output 150
?>
Mỗi đối số của hàm CalculNumbers () truyền qua $ params dưới dạng một mảng khi sử dụng "…".
Có nhiều cách khác nhau để sử dụng toán tử "…". Dưới đây là một số ví dụ:
Ví dụ 2:
<?php
function calculateNumbers($no1, $no2, $no3, $no4, $no5){
$total = $no1 + $no2 + $no3 + $no4 + $no5;
return $total; } $numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers(...$numbers);
//Output 150
?>
Ví dụ 3:
<?php
function calculateNumbers(...$params){
$total = 0; foreach($params as $v){ $total = $total + $v;
}
return $total; } $no1 = 70;
$numbers = array(10, 20, 30, 40, 50); echo calculateNumbers($no1, ...$numbers);
//Output 220
?>
Ví dụ 4:
<?php
function calculateNumbers(...$params){
$total = 0; foreach($params as $v){ $total = $total + $v;
}
return $total; } $numbers1 = array(10, 20, 30, 40, 50);
$numbers2 = array(100, 200, 300, 400, 500); echo calculateNumbers(...$numbers1, ...$numbers2);
//Output 1650
?>
Toán tử NullSafe "? ->" (có thể) kể từ php8
Trong PHP8, nó đã được chấp nhận toán tử mới này, bạn có thể tìm tài liệu tại đây . ?->
đó là NullSafe Operator
, nó trả về null
trong trường hợp bạn cố gắng gọi các hàm hoặc nhận các giá trị từ null
...
Ví dụ:
<?php
$obj = null; $obj = $obj?->attr; //return null $obj = ?->funct(); // return null
$obj = $objDrive->attr; // Error: Trying to get property 'attr' of non-object
?>
? -> Nhà điều hành NullSafe
Đã thêm trong PHP 8.0
Đó là NullSafe Operator, nó trả về null
trong trường hợp bạn cố gắng gọi các hàm hoặc lấy các giá trị từ đó null
. Toán tử Nullsafe có thể được xâu chuỗi và có thể được sử dụng cả trên các phương thức và thuộc tính.
$objDrive = null; $drive = $objDrive?->func?->getDriver()?->value; //return null $drive = $objDrive->func->getDriver()->value; // Error: Trying to get property 'func' of non-object
Toán tử Nullsafe không hoạt động với các khóa mảng:
$drive['admin']?->getDriver()?->value //Warning: Trying to access array offset on value of type null
$drive = []; $drive['admin']?->getAddress()?->value //Warning: Undefined array key "admin"