Câu hỏi Tham khảo - Biểu tượng này có ý nghĩa gì trong PHP?


Cái gì thế này?

Đây là một tập hợp các câu hỏi hiện ra sau đó về cú pháp trong PHP. Đây cũng là một Wiki Cộng đồng, vì vậy mọi người đều được mời tham gia vào việc duy trì danh sách này.

Tại sao điều nà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ó 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 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 một người nào đó chỉ ra 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 đến Hướng dẫn sử dụng PHP cùng với các câu hỏi được liên kết sẽ có khả năng trả lời câu hỏi của bạn sau đó. Nếu vậy, bạn được khuyến khích để upvote câu trả lời. Danh sách này không có nghĩa là thay thế cho sự trợ giúp của những người khác đượ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 các thẻ phân tích cú pháp.


&  Nhà khai thác bitwise hoặc là Tài liệu tham khảo


=&  Tài liệu tham khảo


&=  Nhà khai thác bitwise


&&  Toán tử hợp lý


%  Toán tử số học


!!  Toán tử hợp lý


@  Kiểm soát lỗi Nhà khai thác


?:  Toán tử Ternary


??  Null Coalesce Operator (kể từ PHP 7)


:  Cú pháp thay thế cho cấu trúc điều khiển, Toán tử Ternary


::  Phạm vi điều hành độ phân giải


\  Không gian tên


->  Lớp học và đối tượng


=>  Mảng


^  Nhà khai thác bitwise


>>  Nhà khai thác bitwise


<<  Nhà khai thác bitwise


<<<  Heredoc hoặc Nowdoc


=  Toán tử chuyển nhượng


==  Toán tử so sánh


===  Toán tử so sánh


!==  Toán tử so sánh


!=  Toán tử so sánh


<>  Toán tử so sánh


<=>  Toán tử so sánh (kể từ PHP 7.0)


|  Nhà khai thác bitwise


||  Toán tử hợp lý


~  Nhà khai thác bitwise


+  Toán tử số học, Nhà khai thác mảng


+= và -=  Toán tử chuyển nhượng


++ và --  Nhà điều hành tăng / giảm dần


.=  Toán tử chuyển nhượng


.  Toán tử chuỗi


,  Đối số chức năng

,  Tuyên bố biến


$$  Biến biến


`  Người điều hành thực hiện


<?=  Thẻ mở ngắn


[]  Mảng (cú pháp ngắn từ PHP 5.4)


<?  Mở và đóng thẻ


...  Gỡ bỏ đối số (kể từ PHP 5.6)


**  Lũy thừa (kể từ PHP 5.6)


#  Nhận xét kiểu vỏ một dòng



3793


gốc


Tôi biết điều này không hoàn toàn là PHP, nhưng những gì về việc bao gồm một liên kết đến phpdoc.org cho cú pháp nhận xét phpDocumentor, thường được sử dụng và cũng không thể tìm kiếm /**? - Mike
Tôi có thể đề xuất khung hình vuông và dấu ngoặc nhọn không? - ajreal
Tôi cũng gặp phải vấn đề này (không thể tìm kiếm các ký tự đặc biệt), đó là lý do tại sao tôi thực hiện SymbolHound, một công cụ tìm kiếm không bỏ qua các ký tự đặc biệt. Tôi cũng đã đăng nó lên StackApps. - dncrane
Vâng, từ đầu đề Tại sao điều này?, Tôi đoán đó là vì "Ý tưởng chính là 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". - Herbert
Một câu hỏi đã được hỏi hôm nay (20/11/15) stackoverflow.com/questions/33833259/what-is-rscat-in-php hỏi "$ RsCat trong php là gì?" (câu hỏi đó vẫn được hiển thị và không bị xóa). Kỳ lạ, không có một tham chiếu về $ biến, nhưng về $$ Biến biến chỉ. Tôi tin rằng cần được sửa đổi ở đâu đó. - Funk Forty Niner


Các câu trả lời:


Nhà điều hành tăng / giảm dần

++ toán tử tăng

-- toán tử giảm

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, thao tác tăng / giảm được thực hiện cho biến Đầu tiên sau đó kết quả được trả về. Nếu đặt sau biến, biến là Đầu tiên trả về, sau đó hoạt động 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ó cùng kết quả.

Tiền gia tăng nhanh hơn một chút, bởi vì nó thực sự tăng biến và sau đó 'trả về' kết quả. Post-increment tạo ra một biến đặc biệt, sao chép ở đó 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 số 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ố lượng táo hiện tại và sau đó bạn muốn trừ một 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 lần z đạt được aa là tiếp theo, v.v.

Lưu ý rằng các biến ký tự có thể được tăng lên nhưng không bị giảm đi và thậm chí chỉ có các ký tự ASCII thuần túy (a-z và A-Z) được hỗ trợ.


Bài đăng tràn ngăn xếp:


950



Sự khác biệt là nhiều hơn tốc độ chỉ ... xem xét $ x = 0; $ y = $ x ++; so với $ x = 0; $ y = ++ $ x; và giá trị của $ y trong mỗi trường hợp - Mark Baker
1 cho lưu ý rằng các bộ giảm tốc không hoạt động trên các ký tự, chỉ trên các số - Mark Baker
Vì lợi ích của tất cả mọi người, vui lòng xóa thông tin được in đậm về việc tăng trước nhanh hơn về mặt infinitesimally. Đây là ví dụ tồi tệ nhất tuyệt đối về tối ưu hóa sớm và loại thông tin này không nên ở trong đầu người nếu họ mới bắt đầu học PHP. - Lotus Notes
@ Lotus - Tôi coi đó là một thực tế thú vị. Nếu bạn là người mới bắt đầu với PHP, hoặc C ++, v.v., có vẻ như khá lập dị rằng ++ i và i ++ đủ khác nhau để làm việc ở các tốc độ khác nhau. Tôi thấy nó hấp dẫn. - Peter Ajtai
@Peter Ajtai Có, nó thú vị, nhưng từ cách bạn đã cấu trúc bài viết của bạn, bạn làm cho nó có vẻ giống như một trong những sự kiện chính của PHP đó là hoàn toàn quan trọng để sử dụng ngôn ngữ. - Lotus Notes


Nhà điều hành bitwise

Một chút là gì? Một bit là biểu diễn của 1 hoặc 0. Về cơ bản OFF (0) và ON (1)

Một 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 được đặt. Chúng ta sẽ xem xét tại sao giá trị tối đa của byte là 255.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------

Biểu 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? Vâng, chúng ta 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ể nhìn thấy từ bảng chỉ có bit mà họ chia sẻ với nhau là 8 bit.

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 thêm vào cùng nhau, trả về 36.

Toán tử "Hoặc": |

$a =  9;
$b = 10;
echo $a | $b;

Điều này sẽ xuất 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 ta có 3 bit thiết lập, trong 8, 2, và 1 cột. Thêm các mục sau: 8 + 2 + 1 = 11.


361



Nếu $ a có giá trị lớn hơn 255 thì sao? - Aycan Yaşıt
Có một máy tính trực tuyến bitwise: bitwiseoperatorcalculator.com - jonprasetyo
@ AycanYaşıt Hầu hết các hệ điều hành đang sử dụng hệ thống 32 bit và 64 bit, điều đó có nghĩa là giới hạn nhiều hơn 255 (8 bit). - AlbertSamuel
@ AycanYaşıt Trên thực tế, sự biểu diễn ở đây với độ dài một byte thậm chí không chính xác, vì ngay cả số nguyên nhỏ nhất vẫn là 64 bit (8 byte) trong bộ nhớ trên nền tảng 64bit hiện đại. - Kaii


_  Bí danh cho gettext () 

Ký tự gạch dưới '_' như trong _() là bí danh cho gettext() chức năng.


225





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
a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"

210





Ma thuật hằng số: 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ố phép 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 một bao gồm, tên của tập tin đính kèm được trả về. Kể từ PHP 4.0.2, __FILE__ luôn 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 các phiên bản cũ hơn có 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. (Được thêm vào trong PHP 5.3.0.)

__FUNCTION__: Tên hàm. (Đượ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 khi nó được khai báo (phân biệt chữ hoa chữ thường). Trong PHP 4 giá trị của nó luôn thấp hơn.

__CLASS__: Tên lớp. (Được thêm vào trong PHP 4.3.0) Kể từ PHP 5 hằng số này trả về tên lớp khi nó được khai báo (phân biệt chữ hoa chữ thường). Trong PHP 4 giá trị của nó luôn thấp hơn. Tên lớp bao gồm không gian tên được khai báo trong (ví dụ: Foo\Bar). Lưu ý rằng bằ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 pháp đặc điểm, __CLASS__ là tên của lớp đượ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 khi 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 được khai báo trong (ví dụ: Foo\Bar).

__METHOD__: Tên phương thức lớp. (Được thêm vào trong PHP 5.0.0) Tên phương thức được trả về 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


194





<=> Nhà điều hành tàu vũ trụ

Đã thêm trong PHP 7

Các phi hành đoàn tàu vũ trụ  <=> là toán tử so sánh mới nhất được thêm vào trong PHP 7. Nó là một không liên kết toán tử nhị phân có cùng mức ưu tiên như toán tử bằng nhau (==, !=, ===, !==). 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ử kết quả trong một biểu thức số nguyên của:

  • 0 khi cả hai toán hạng đều bằng nhau
  • Ít 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 sẽ là các kiểu callback kiểu so sánh được mong đợi trả về một số nguyên không, âm hoặc dương dựa trên sự so sánh ba chiều giữa hai giá trị. Hàm so sánh được chuyển đến usort là một ví dụ như vậy.

Trước khi 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;
    }
});

Vì PHP 7 bạn có thể viết ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    return $a <=> $b;
});

189



Không chắc chắn $a <=> $b khác với $a - $b - rev
@AcidShout $a - $b làm việc cho các số, nhưng không phải là chuỗi, đối tượng hoặc mảng. - mcrumley
@mcrumley Không, tệ hơn thế. Nói chung $a - $b thậm chí không làm việc cho các con số; nó chỉ hoạt động cho số nguyên. Nó không hoạt động với các số không nguyên, bởi vì usort đặt giá trị trả về của hàm so sánh của bạn vào int, có nghĩa là 0,5 được truyền tới 0, có nghĩa là hai số có chênh lệch nhỏ hơn 1, chẳng hạn như 4 và 4.6, có thể (tùy thuộc vào số nào được chuyển làm đối số đầu tiên cho hàm so sánh của bạn) so sánh không chính xác như nhau. - Mark Amery
@MarkAmery hướng dẫn di chuyển không phải là hành vi được ghi lại của toán tử. Để biết rằng bạn muốn xem phần điều khiển ngôn ngữ của hướng dẫn sử dụng cho điều đó php.net/language.operators.comparison hành vi thực tế đằng sau điều này phụ thuộc vào các hàm so sánh khác nhau của API, giống như khi bạn đang làm strcmp cho chuỗi, nơi bạn không thể đảm bảo giá trị trả lại thực tế trong mọi trường hợp. Chắc chắn, nó hầu như luôn luôn 1, 0, hoặc -1, nhưng đối với những trường hợp bạn không thể đảm bảo nó giống như trong gói strcmp của libc, bạn cung cấp cùng một hành vi được xác định như thông số cơ bản để an toàn - Sherif
@ MarkAmery Điểm ở đây không phải là để cho phép mọi người dựa vào hành vi không xác định. Đối với trường hợp một người nào đó nhận được một giá trị không chính xác là 1, 0 hoặc -1, bạn sẽ nhận được ai đó gửi báo cáo lỗi cho rằng có điều gì đó sai trong ngôn ngữ. Đó là lý do tại sao chúng tôi ghi lại rằng tất cả những gì chúng tôi có thể đảm bảo là giá trị đó sẽ ít hơn, lớn hơn, hoặc là tương đương với 0 và không nhất thiết là 1, 0 và -1. - Sherif


Loại toán tử

instanceof được sử dụng để xác định xem một biến PHP là một đối tượng instantiated của một lớp nhất định.

<?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:

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 là trường hợp của sclass

Ví dụ về thừa kế

<?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:

bool(true)
bool(true)

Ví dụ với bản sao

<?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:

bool(true)
bool(true)

121



Các công trình trên cũng có 'giao diện'. Điều này rất hữu ích để kiểm tra xem một giao diện cụ thể có sẵn không. - Ryan Vincent


Tổng quan về toán tử trong PHP:


Toán tử logic:

  • $ a && $ b: TRUE nếu cả $ a và $ b là TRUE.
  • $ a || $ b: TRUE nếu $ a hoặc $ b là TRUE.
  • $ a xor $ b: TRUE nếu $ a hoặc $ b là TRUE, nhưng không phải cả hai.
  • ! $ a: TRUE nếu $ a không TRUE.
  • $ a và $ b: TRUE nếu cả $ a và $ b là TRUE.
  • $ a hoặc $ b: TRUE nếu $ a hoặc $ b là TRUE.

Toán tử so sánh:

  • $ a == $ b: TRUE nếu $ a bằng $ b sau khi loại juggling.
  • $ a === $ b: TRUE nếu $ a bằng $ b và chúng có cùng loại.
  • $ a! = $ b: TRUE nếu $ a không bằng $ b sau khi loại juggling.
  • $ a <> $ b: TRUE nếu $ a không bằng $ b sau khi loại juggling.
  • $ a! == $ b: TRUE nếu $ a không bằng $ b hoặc chúng không cùng loại.
  • $ a <$ b : TRUE nếu $ a nhỏ hơn $ b.
  • $ a> $ b : TRUE nếu $ a lớn hơn $ b.
  • $ a <= $ b : TRUE nếu $ a nhỏ hơn hoặc bằng $ b.
  • $ a> = $ b : TRUE nếu $ a lớn hơn hoặc bằng $ b.
  • $ a <=> $ b : Một số nguyên nhỏ hơn, bằng hoặc lớn hơn 0 khi $ a tương ứng nhỏ hơn, bằng hoặc lớn hơn $ b. Có sẵn như của PHP 7.
  • $ a? $ b: $ c : nếu $ a return $ b else return $ c (toán tử bậc ba)
  • $ a ?? $ c : Giống như $ a? $ a: $ c (toán tử kết hợp rỗng - yêu cầu PHP> = 7)

Toán tử số học:

  • - $ a : Đối diện với $ a.
  • $ a + $ b : Tổng của $ a và $ b.
  • $ a - $ b : Chênh lệch $ a và $ b.
  • $ a * $ b : Sản phẩm của $ a và $ b.
  • $ a / $ b : Quotient của $ a và $ b.
  • $ a% $ b : Phần còn lại của $ a chia cho $ b.
  • $ a ** $ b : Kết quả tăng $ a lên $ b'th power (được giới thiệu trong PHP 5.6)

Nhà điều hành tăng / giảm dần:

  • ++ $ a : Tăng dần từng cái một, sau đó trả về $ a.
  • $ a ++ : Trả về $ a, sau đó tăng $ a một.
  • - $ a : Giảm dần từng cái một, sau đó trả về $ a.
  • $ a-- : Trả về $ a, sau đó giảm $ a một.

Các toán tử bitwise:

  • $ a & $ b : Các bit được đặt trong cả $ a và $ b được đặt.
  • $ a | $ b : Các bit được đặt bằng $ a hoặc $ b được đặt.
  • $ a ^ $ b : Các bit được đặt bằng $ a hoặc $ b nhưng không được đặt cả hai.
  • ~ $ a : Các bit được đặt trong $ a không được đặt và ngược lại.
  • $ a $ $ b : 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 : Chuyển các bit của các bước $ a $ b sang phải (mỗi bước có nghĩa là "chia cho hai")

Chuỗi nhà khai thác:

  • $ a. $ b : Ghép nối $ a và $ b.

Nhà khai thác mảng:

  • $ a + $ b: Liên minh $ a và $ b.
  • $ a == $ b : TRUE nếu $ a và $ b có cùng cặp khóa / giá trị.
  • $ a === $ b : TRUE nếu $ a và $ b có cùng cặp khóa / giá trị theo thứ tự giống nhau và cùng loại.
  • $ a! = $ b : TRUE nếu $ a không bằng $ b.
  • $ a <> $ b : TRUE nếu $ a không bằng $ b.
  • $ a! == $ b : TRUE nếu $ a không giống với $ b.

Nhà điều hành 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 : Tương tự như $ a = $ a - $ b
  • $ a * = $ b : Tương tự như $ a = $ a * $ b
  • $ a / = $ b : Tương tự như $ a = $ a / $ b
  • $ a% = $ b : Tương tự như $ a = $ a% $ b
  • $ a ** = $ b : Tương tự như $ a = $ a ** $ b
  • $ a. = $ b : Tương tự 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 : Tương tự như $ a = $ a << $ b
  • $ a >> = $ b : Tương tự như $ a = $ a >> $ b

chú thích

and toán tử và or toán tử có ưu tiên thấp hơn toán tử gán =.

Điều này có nghĩa rằng $a = true and false; tương đương với ($a = true) and false.

Trong hầu hết các trường hợp, có thể bạn 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.


96





Nhà điều hành tàu vũ trụ <=> (Đã thêm trong PHP 7)

Ví dụ cho <=> Nhà khai thác tàu vũ trụ (PHP 7, Nguồn: Hướng dẫn sử dụng PHP):

Số nguyên, Nổi, Chuỗi, Mảng & đối tượng cho 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

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

72



Đây là một bản sao của điều này câu trả lời. - David Archibald
Kiểm tra php.net/manual/en/language.operators.comparison.php để tham khảo - rajangupta


{} Dấu ngoặc nhọn

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

55



Ký hiệu {''} cho tên thuộc tính. echo $ movies-> movie -> {'dòng lớn'} -> dòng; có thể được sử dụng để truy cập dữ liệu trong SimpleXMLElement. Có lẽ nó có thể được sử dụng trong các trường hợp khác nữa. php.net/manual/en/simplexml.examples-basic.php - Andrei
Đây là một điều thú vị mặc dù - adelowo