Kết hợp null null
Tóm tắt, sự ra đời của PHP 7 một bước đột phá rất quan trọng bởi hiện nay có khá nhiều công nghệ ra đời với tốc độ xử lý nhanh nên PHP cần phải cạnh tranh rất nhiều mới giữ được vị trí của mình trên thị trường
Trong PHP 7, một tính năng mới, toán tử hợp nhất null (??) đã được giới thiệu. Nó được sử dụng để thay thế hoạt động bậc ba kết hợp với hàm isset(). Toán tử hợp nhất Null trả về toán hạng đầu tiên của nó nếu nó tồn tại và không phải là NULL; Show Ví dụ"); // Equivalent code using ternary operator $username = isset($_GET['username']) ? $_GET['username'] : 'not passed'; print($username); print(" Nó tạo ra đầu ra trình duyệt sau - not passed not passed not passed Ngoài các toán tử như toán tử quan hệ, toán tử luận lý mà PHP đang hỗ trợ thì PHP7 đã bổ sung thêm một số toán tử rất hay giúp xử lý dữ liệu nhanh hơn. Trong bài viết mình chỉ giới thiệu những toán tử mà mình biết thôi nhé, sau này tìm ra thêm mình sẽ bổ sung Nội dung chính Hiển thị
Run bên dưới trên chế độ tương tác php ( 1 trên thiết bị đầu cuối). Nhận trên mỗi dòng hiển thị kết quả kiểm tra
Nhà điều hành Null Coalescing ??
Use ??
Nhà điều hành Stacking Null Coalescenot passed not passed not passed0 Nhà khai thác bậc ba ?
Use ?
Ba xếp hạng toán tử 2Xếp chồng cả hai, chúng ta có thể rút ngắn điều kiện này 3Go to this thing 40Tuyệt, phải không?. -)149 hữu ích 4 bình luận chia sẻ câu trả lời 74 Nếu bạn sử dụng thuật toán bậc ba phím tắt như thế này, nó sẽ gây ra thông báo nếu 9 không được đặt 41Vì vậy, thay vào đó bạn phải làm điều gì đó như sau 42Các nhà khai thác vô liên kết tương đương với tuyên bố trên, và sẽ trở lại 'mặc định' nếu 9không được thiết lập hoặc là $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -14 43Lưu ý rằng nó không kiểm tra độ tin cậy. Nó chỉ kiểm tra nếu nó được đặt và không phải là null Bạn có thể làm điều này và giá trị được xác định ban đầu (đặt và không $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -14) cũng sẽ được trả lại 44Bây giờ đó là một nhà điều hành liên kết thích hợp 74 hữu ích 0 bình luận chia sẻ câu trả lời 45 Sự khác biệt chính là
Bây giờ, hãy giải thích sự khác biệt giữa ví dụ Nhà điều hành bậc ba 26 47Nhà điều hành Null Coalescing 27 48Đây là bảng giải thích sự khác biệt và giống nhau giữa 28và$a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -16
45 hữu ích 0 bình luận chia sẻ câu trả lời 17 Cả hai đều hoạt động khác nhau khi nói đến xử lý dữ liệu động Nếu biến rỗng ('') thì liên kết rỗng sẽ coi biến là đúng nhưng toán tử bậc ba viết tắt thì không. Và đó là điều cần phải ghi nhớ 49And start $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -150 Liên kết. https. //3v4l. tổ chức/ZBAa1 17 hữu ích 1 bình luận chia sẻ câu trả lời 16 Cả hai đều là viết tắt của các biểu thức dài hơn $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -16là viết tắt của 31. Biểu thức này sẽ đánh giá thành $a nếu $ađánh giá là TRUE$a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -11là viết tắt của 33. Biểu thức này sẽ đánh giá thành $a nếu $a được đặt và không trốngCác trường hợp sử dụng của chúng trùng lặp khi $a không được xác định hoặc null. Khi $a không được xác định $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -11 sẽ không tạo ra E_NOTICE, nhưng kết quả vẫn giống nhau. When $a is null, results are same nhau 16 hữu ích 0 bình luận chia sẻ câu trả lời 6 Đối chiếu với người mới bắt đầu Liên kết toán tử rỗng (??) Mọi thứ đều đúng ngoại trừ $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -14các giá trị và không xác định (biến / chỉ số mảng / thuộc tính đối tượng) Ví dụ $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -151 Điều này về cơ bản là kiểm tra biến (chỉ số mảng, thuộc tính đối tượng, v. v. ) có tồn tại hay không $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -14. future as 37chức năngViết tắt toán tử bậc ba (?. ) Mỗi điều sai ( $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -18, $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -14, not passed not passed not passed41, chuỗi trống) đều được đến như sai, nhưng nếu điều đó không xác định thì nó cũng đi kèm như sai nhưng 401 sẽ némVí dụ $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -152 Hi vọng thư này có ích 6 hữu ích 0 bình luận chia sẻ câu trả lời 4 Cuộn xuống liên kết này và xem phần, nó cung cấp cho bạn một ví dụ so sánh như bên dưới $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -153 Tuy nhiên, không nên xâu chuỗi các toán tử vì nó khiến việc đọc mã sau này trở nên khó hiểu hơn
Về cơ bản, sử dụng toán tử liên hợp sẽ làm cho nó tự động kiểm tra null không giống như toán tử bậc ba 4 hữu ích 5 bình luận chia sẻ câu trả lời 3 Các câu trả lời khác đi sâu và đưa ra những lời giải thích tuyệt vời. Đối với những người tìm kiếm câu trả lời nhanh, 402 Là 403while 404 Là 405Sự khác biệt chính sẽ là khi toán tử bên trái là
3 hữu ích 1 bình luận chia sẻ câu trả lời 2 Có vẻ như có những ưu điểm và thiếu sót khi sử dụng $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -11hoặc $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -16. Ưu điểm của việc sử dụng $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -16là nó đánh giá sai và null và "" giống nhau. Vấn đề là nó báo cáo một E_NOTICE nếu các đối số trước đó trống. Với $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -11người chuyên nghiệp là không có E_NOTICE, nhưng điều khó khăn là nó không đánh giá sai và không giống nhau. Theo kinh nghiệm của tôi, tôi đã thấy mọi người bắt đầu sử dụng null và false thay thế cho nhau nhưng sau đó họ cuối cùng sử dụng cách sửa mã của họ để phù hợp với việc sử dụng null hoặc false, nhưng không phải . Một cách khác là tạo ra một trạng thái ternary phức tạp hơn. 414Sau đây là một ví dụ về sự khác biệt của việc sử dụng $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -11toán tử sử dụng cả null và sai $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -154 Tuy nhiên, bằng cách giải thích kỹ thuật toán toán bậc ba, chúng ta có thể làm cho một chuỗi sai hoặc chuỗi rỗng "" hoạt động như thể nó là một chuỗi rỗng mà không cần phải ném e_notice $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -155 Cá nhân tôi nghĩ sẽ thực sự tuyệt vời nếu một phiên bản PHP trong tương lai bao gồm một toán tử mới khác. 416thay thế cú pháp trên. tức là. 417Cú pháp đó sẽ đánh giá null, false và "" như nhau và không ném ra một E_NOTICE2 hữu ích 2 bình luận chia sẻ câu trả lời 1 $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -156 1 hữu ích 0 bình luận chia sẻ câu trả lời 0 418chỉ thực hiện hai nhiệm vụ. nó kiểm tra 419và 420. Please view ví dụ sau$a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -157 Ví dụ mã ở trên nói rằng 418xử lý một biến không tồn tại và một biến được đặt thành 3theo cùng một cách 418là một cải tiến so với 424. Vui lòng xem đoạn mã sau so sánh hai đoạn mã$a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -158 Vì vậy, sự khác biệt giữa hai là 418toán tử được thiết kế để xử lý các biến không xác định tốt hơn 424. Trong khi đó, 424là viết tắt của 428 418không có nghĩa là để thay thế 424, nhưng trong một số trường hợp sử dụng như trong ví dụ trên, nó cho phép bạn viết mã sạch với ít rắc rối hơnứng dụng. http. // cư dân. io/post/6/php7-null-coalescing-operator-usage-and-examples 0 hữu ích 1 bình luận chia sẻ câu trả lời 0 Khi sử dụng các superglobal như $ _GET hoặc $ _REQUEST, bạn nên biết rằng chúng có thể là một chuỗi rỗng. Trong trường hợp cụ thể này, ví dụ này $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -159 sẽ không thành công vì giá trị của $ tên người dùng bây giờ là một chuỗi trống Vì vậy, khi sử dụng $ _GET hay thậm chí là $ _REQUEST, bạn nên sử dụng toán tử cấp ba thay thế như sau |