Toán tử elvis [
expr1 ? expr1 : expr2;2] thực ra là tên được sử dụng cho tốc ký ternary [được giới thiệu trong PHP 5. 3]. Nó có cú pháp sau
// PHP 5.3+ expr1 ?: expr2;
Điều này tương đương với
expr1 ? expr1 : expr2;
expr1 ? expr1 : expr2;
3 [Toán tử kết hợp Null]
Toán tử hợp nhất null [______43] đã được giới thiệu trong PHP 7 và nó có cú pháp sau
// PHP 7+ $x ?? $y;
Điều này tương đương với
isset[$x] ? $x : $y;
expr1 ? expr1 : expr2;
2 so với. expr1 ? expr1 : expr2;
3
Bảng dưới đây cho thấy sự so sánh song song của hai toán tử với một biểu thức đã cho
Biểu thức_______10expr1 ? expr1 : expr2;1
expr1 ? expr1 : expr2;2
expr1 ? expr1 : expr2;3
expr1 ? expr1 : expr2;4
expr1 ? expr1 : expr2;5
expr1 ? expr1 : expr2;3
expr1 ? expr1 : expr2;3
expr1 ? expr1 : expr2;8
expr1 ? expr1 : expr2;3
[và Thông báo. biến không xác định. x]
expr1 ? expr1 : expr2;3
// PHP 7+ $x ?? $y;1
expr1 ? expr1 : expr2;3
// PHP 7+ $x ?? $y;3
// PHP 7+ $x ?? $y;4
// PHP 7+ $x ?? $y;5
// PHP 7+ $x ?? $y;5
// PHP 7+ $x ?? $y;7
expr1 ? expr1 : expr2;3
// PHP 7+ $x ?? $y;9
isset[$x] ? $x : $y;0
isset[$x] ? $x : $y;1
isset[$x] ? $x : $y;1
isset[$x] ? $x : $y;3
isset[$x] ? $x : $y;4
isset[$x] ? $x : $y;4
isset[$x] ? $x : $y;6
expr1 ? expr1 : expr2;3
isset[$x] ? $x : $y;8
isset[$x] ? $x : $y;9
expr1 ? expr1 : expr2;20
expr1 ? expr1 : expr2;20
expr1 ? expr1 : expr2;22
expr1 ? expr1 : expr2;23
expr1 ? expr1 : expr2;23
expr1 ? expr1 : expr2;25
expr1 ? expr1 : expr2;3
expr1 ? expr1 : expr2;27
expr1 ? expr1 : expr2;28
expr1 ? expr1 : expr2;29
expr1 ? expr1 : expr2;29
expr1 ? expr1 : expr2;21
expr1 ? expr1 : expr2;22
expr1 ? expr1 : expr2;22
expr1 ? expr1 : expr2;24
expr1 ? expr1 : expr2;25
expr1 ? expr1 : expr2;25
Hy vọng bạn tìm thấy bài viết này hữu ích. Nó được xuất bản vào ngày 14 tháng 5 năm 2018 [và được sửa đổi lần cuối vào ngày 06 tháng 6 năm 2021]. Hãy thể hiện tình yêu và sự ủng hộ của bạn bằng cách.
PHP5. 4 đã được giới thiệu vào năm 2015, vì vậy sẽ an toàn khi cho rằng hầu hết các máy chủ/môi trường sẽ sử dụng nó, nhưng bạn nên kiểm tra kỹ xem mã của mình có thể được lưu trữ ở đâu đó sử dụng phiên bản thấp hơn hay không.
Để cung cấp một chút thông tin cơ bản, PHP cũng có một thẻ lối tắt với cú pháp
expr1 ? expr1 : expr2;3, thẻ này có thể gây ra sự cố vì nó có chung cú pháp với XML, nhưng cú pháp
expr1 ? expr1 : expr2;4 không xung đột với XML nên sử dụng an toàn
Mọi cảnh báo mà bạn thấy về cú pháp có thể là do trước phiên bản 5. 4 PHP gói cả hai thẻ dưới php. ini, điều này có nghĩa là bật cú pháp
expr1 ? expr1 : expr2;5 cũng có nghĩa là bật cú pháp
expr1 ? expr1 : expr2;3, điều này có thể dẫn đến sự cố nếu bạn sử dụng PHP kết hợp với XML
Từ phiên bản 5. 4 trở đi, PHP luôn cung cấp thẻ
expr1 ? expr1 : expr2;5 và không còn liên kết nó với php. ini có nghĩa là nó có thể được sử dụng một cách an toàn trong mọi trường hợp
Trở thành Jedi viết mã WooC Commerce
Nhấp vào đây để đăng ký Khóa học viết mã WooC Commerce miễn phí của chúng tôi
Đọc thêm
https. //kỹ thuật phần mềm. giao dịch cổ phiếu. com/câu hỏi/151661/is-it-bad-practice-to-use-tag-in-php – Câu hỏi trao đổi ngăn xếp kỹ thuật phần mềm này có nhiều câu trả lời hữu ích đi sâu vào chi tiết hơn bài viết này. Lưu ý rằng hầu hết các câu trả lời/nhận xét khuyên bạn không nên sử dụng cú pháp đã được thực hiện trước năm 2015
PHP 7 đã thêm toán tử dấu chấm hỏi kép [??] toán tử mới. Trong PHP 7, toán tử dấu chấm hỏi kép [??] được gọi là Toán tử kết hợp Null
Nó trả về toán hạng đầu tiên nếu nó tồn tại và không phải là NULL; . Nó đánh giá từ trái sang phải. Toán tử Null Coalescing cũng có thể được sử dụng ở định dạng chuỗi
Hãy lấy ví dụ dưới đây để minh họa toán tử dấu chấm hỏi kép [??]
Ví dụ
đầu ra
isset[$x] ? $x : $y;5
Ví dụ
đầu ra
isset[$x] ? $x : $y;6
Toán tử bậc ba–còn được gọi là toán tử bậc ba–là một viên ngọc nhỏ trong PHP [và các ngôn ngữ lập trình khác] mà bạn có thể bắt gặp. Cú pháp của nó ban đầu không bình thường, nhưng nó cho phép bạn đơn giản hóa các điều kiện phức tạp hơn thành các câu lệnh một dòng
Cú pháp cơ bản của toán tử bậc ba là
isset[$x] ? $x : $y;7
Nói cách khác, PHP sẽ đánh giá điều kiện. Nếu điều kiện là đúng, giá trị đầu tiên–sau dấu chấm hỏi–được trả về. Nếu điều kiện là sai, giá trị thứ hai – sau dấu hai chấm – được trả về
Chìa khóa để sử dụng toán tử này là hiểu rằng một giá trị được trả về bởi biểu thức. Giá trị này phải được xử lý, vì bạn sẽ xử lý thứ gì đó được trả về bởi một hàm. Chỉ cần hai mẫu sử dụng này sẽ là
- Gán một giá trị cho một biến
isset[$x] ? $x : $y;8
isset[$x] ? $x : $y;9
Trong ví dụ đầu tiên, biến $sort sẽ được gán giá trị là $_GET[‘sort’], nếu biến $_GET[‘sort’] được đặt. Nếu không, biến $sort sẽ được gán giá trị là asc.
Trong ví dụ thứ hai, tập lệnh sẽ in “Bạn đã nhập tên của mình vì ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST . ”, nếu không có giá trị $_POST['name'], hoặc nó sẽ in ra “Bạn đã nhập tên của mình là XXXX” [trong đó XXXX là giá trị của $_POST['name']], nếu $_POST .
Bạn có thể viết lại hai câu lệnh này như vậy
expr1 ? expr1 : expr2;0
Một ví dụ cuối cùng là ví dụ này, mà tôi đã sử dụng trong PHP và MySQL cho các trang web động. Sách hướng dẫn Visual QuickPro
expr1 ? expr1 : expr2;1
Trong ví dụ đó [từ Script 12. 15, view_users. php], màu nền mặc định được đặt. Đối với mỗi lần lặp lại của vòng lặp while, tập lệnh sẽ gán $bg một giá trị dựa trên giá trị hiện có của nó. Nếu giá trị hiện tại của nó bằng #eeeeee, thì giá trị của nó được chuyển thành #ffffff. Ngược lại, nếu giá trị hiện tại của nó KHÔNG bằng #eeeeee [điều kiện là sai], thì giá trị của nó được gán là #eeeeee. Điều này dẫn đến các màu hàng xen kẽ