Null coalescing operator trong php
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 việc 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. Show
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. 1. Toán tử ?? Null Coalescing OperatorTrong PHP7 có giới thiệu toán tử if (isset($_GET['id'])){ $id = $_GET['id']; } Hoặc kết hợp với toán tử ba ngôi: $id = isset($_GET['id']) ? $_GET['id'] : ''; Bài viết này được đăng tại [free tuts .net] Tuy nhiên nếu sử dụng toán tử Như vậy cú pháp sẽ như sau: $id = ($is_null) ?? 'ok'; Giải thích: Nếu biểu thức $is_null có giá trị khác null thì biến $id sẽ có giá trị là $is_null, ngược lại biến $id sẽ có giá trị là ok. 2. Toán tử <=> Spaceship OperatorĐây là toán tử thường dùng với kiểu số (INT), nếu bạn sử dụng với kiểu chuỗi thì hệ thống sẽ dựa vào mã ASCII để lấy ra số của chuỗi đó. Toán tử này có cú pháp như sau: Ta sẽ có ba trường hợp xảy ra:
Ví dụ: $a = 12; $b = 20; $result = $a <=> $b; echo $result; // kết quả -1 3. Lời kếtHiện tại thì mình mới tìm thấy hai toán tử trên thôi, sau này nếu tìm thấy thêm thì mình sẽ bổ sung cho bài viết. Hoặc nếu bạn biết toán tử nào thì hãy comment để mình bổ sung vào bài viết nhé. answer 422 Khi đối số đầu tiên của bạn là null, về cơ bản chúng giống nhau ngoại trừ việc liên kết null sẽ không xuất ra
Dưới đây là một số mã ví dụ để chứng minh điều này:
Các dòng có thông báo là những dòng mà tôi đang sử dụng toán tử bậc ba viết tắt thay vì toán tử liên kết null. Tuy nhiên, ngay cả khi có thông báo, PHP sẽ đưa ra phản hồi tương tự. Thực thi mã: https://3v4l.org/McavC Tất nhiên, điều này luôn luôn giả định đối số đầu tiên là Vì thế:
sau đó sẽ có 422 hữu ích 5 bình luận chia sẻ answer 149 Chạy bên dưới trên chế độ tương tác php (
Nhà điều hành Null Coalescing ??
Sử dụng ??
Nhà điều hành Stacking Null Coalese
Nhà khai thác bậc ba ?:
Sử dụng ?:
Toán tử bậc ba xếp chồng
Xếp chồng cả hai, chúng ta có thể rút ngắn điều này:
Về điều này:
Tuyệt, phải không? :-)149 hữu ích 4 bình luận chia sẻ answer 74 Nếu bạn sử dụng toán tử bậc ba phím tắt như thế này, nó sẽ gây ra thông báo nếu
Vì vậy, thay vào đó bạn phải làm điều gì đó như sau:
Các nhà khai thác vô coalescing tương đương
với tuyên bố trên, và sẽ trở lại 'mặc định' nếu
Lư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 null. Bạn cũng có thể làm điều này và giá trị được xác định đầu tiên (đặt và không
Bâ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ẻ answer 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 bằng ví dụ: Nhà điều hành bậc ba
Nhà điều hành Null Coalescing
Đây là bảng giải thích sự khác biệt và giống nhau giữa
45 hữu ích 0 bình luận chia sẻ answer 17 Cả hai đều hoạt động khác nhau khi nói đến xử lý dữ liệu động. Nếu biến trố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ớ.
Và đầu ra:
Liên kết: https://3v4l.org/ZBAa1 17 hữu ích 1 bình luận chia sẻ answer 16 Cả hai đều là viết tắt của các biểu thức dài hơn.
Các trường hợp sử dụng của chúng trùng lặp khi $ a là không xác định hoặc null. Khi $ a không được xác định 16 hữu ích 0 bình luận chia sẻ answer 6 Đối với người mới bắt đầu: Toán tử liên kết rỗng (??) Mọi thứ đều đúng ngoại trừ Ví dụ:
Đ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 Viết tắt toán tử bậc ba (? :) mỗi điều sai ( Ví dụ
Hi vọng điêu nay co ich 6 hữu ích 0 bình luận chia sẻ answer 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:
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ẻ answer 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,
trong khi
Sự 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ẻ answer 2 Có vẻ như có những ưu và khuyết điểm khi sử dụng Sau đây là một ví dụ về sự khác biệt của việc sử dụng
Tuy nhiên, bằng cách giải thích kỹ lưỡng toán tử 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 ném e_notice:
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: 2 hữu ích 2 bình luận chia sẻ answer 1
1 hữu ích 0 bình luận chia sẻ answer 0
Ví dụ mã ở trên nói rằng
Vì vậy, sự khác biệt giữa hai là
Tín dụng: http://dwellupper.io/post/6/php7-null-coalescing-operator-usage-and-examples 0 hữu ích 1 bình luận chia sẻ answer 0 Khi sử dụng các superglobals 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
sẽ không thành công vì giá trị của $ username bây giờ là một chuỗi trống. Vì vậy, khi sử dụng $ _GET hoặc thậm chí $ _REQUEST, bạn nên sử dụng toán tử bậc ba thay thế như sau:
Bây giờ giá trị của tên người dùng $ là 'không ai cả' như mong đợi. 0 hữu ích 1 bình luận chia sẻ |